【问题标题】: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]]
]

【问题讨论】:

    标签: python pandas numpy csv tensorflow


    【解决方案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 - 抱歉,我错过了,答案已更改
    猜你喜欢
    • 2017-01-08
    • 1970-01-01
    • 1970-01-01
    • 2016-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-07
    相关资源
    最近更新 更多