将列中具有相同值的行合并在一起
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 - 抱歉,我错过了,答案已更改以上是关于将列中具有相同值的行合并在一起的主要内容,如果未能解决你的问题,请参考以下文章