将列中具有相同值的行合并在一起

Posted

技术标签:

【中文标题】将列中具有相同值的行合并在一起【英文标题】:Merge rows together who have the same value in a column 【发布时间】:2021-04-26 15:35:30 【问题描述】:

我有一个这样的 CSV 文件(通过使用 read_csv 使用 pandas 解析):

Filename f1 f2 f3
1.jpg     1 0.2 0.3
1.jpg     0 0.8 0.7       
2.jpg     1 0.3  0.2    

我将如何使用此数据集并将其更改为如下所示的 numpy 数组:

[
   [[1,0.2,0.3],[0,0.8.0.7]],
   [[1,0.3,0.2]]
]

【问题讨论】:

【参考方案1】:

您可以通过 GroupBy.apply 使用 lambda 函数创建嵌套列表,DataFrame.set_index 用于避免将列 Filename 转换为列表:

df = pd.read_csv(file)

L = (df.set_index('Filename')
       .groupby('Filename')
       .apply(lambda x: x.to_numpy().tolist())
       .tolist())
print (L)

或者:

df = pd.read_csv(file, index_col=0)

L = (df.groupby('Filename')
       .apply(lambda x: x.to_numpy().tolist())
       .tolist())
print (L)

[
 [[1.0, 0.2, 0.3], [0.0, 0.8, 0.7]], 
 [[1.0, 0.3, 0.2]]
]

【讨论】:

您好,感谢您的回答,但不幸的是,这无济于事,因为我希望在 numpy 数组中获得 1.jpg 的所有答案。因此,如果我运行类似于 arr[1] 的代码行,它将输出 [[1,0.2,0.3],[0,0.8.0.7]] @jr123456jr987654321 - 抱歉,我错过了,答案已更改

以上是关于将列中具有相同值的行合并在一起的主要内容,如果未能解决你的问题,请参考以下文章

查找一列中具有相同值而另一列中具有其他值的行?

如果它们具有相同的标题,如何组合数据表但将列添加在一起? (需要指导或资源)

我不能在列中添加具有 2 个相同值的行

SQL - 选择两列中具有相同值的行

如何合并列中具有相同值的两个表

MS Access 查询:合并特定字段列中具有相同数据的行