【问题标题】:to create csv file and append data according into the column if name of the file is same如果文件名相同,则创建 csv 文件并将数据附加到列中
【发布时间】:2019-12-15 19:35:17
【问题描述】:

我的数据是使用分隔符“,”按行生成的,并且创建并附加了 csv 文件。我的数据看起来有四列:

Image   Maxval   locx  locy
123.jpg  0.99     56     78
223.jpg  0.95     54     71
221.jpg  0.93     54     77
123.jpg  0.92     66     77
223.jpg  0.94     56     79
221.jpg  0.97     57     72

现在,如果图像名称相同,那么我想将数据附加到列中,使其看起来像

Image   Maxval   locx  locy   Maxval  locx   locy
123.jpg  0.99     56     78    0.92     66     77
223.jpg  0.95     54     71    0.94     56     79
221.jpg  0.93     54     77    0.97     57     72

我很困惑是否应该使用数据框或一些 csv 函数。

照片显示 Maxval_1 列已排序,但 Maxval_2、maxval_3 和 Maxval_4 其他列未排序

【问题讨论】:

  • 使用@anky_91 它可以工作,但在数据排序之前它现在不是
  • .reindex(df.Image.unique()添加到相同的代码中,它现在符合预期的输出
  • @anky_91 它只排序第一部分,它只排序 Maxval_1 而不是 Maxval_2、maxval_3 和 Maxval_4
  • @anky_91 我试过 m.columns.sort_values('Maxval',ascending=False) 但没用。
  • 我没有关注,预期的输出和我的代码生成的输出是一样的。当你说未排序时,你能解释一下吗?谢谢

标签: python python-3.x pandas dataframe export-to-csv


【解决方案1】:

使用groupby.cumcount 分配密钥kunstack

m=(df.assign(k=(df.groupby('Image').Maxval.cumcount()+1))
.set_index(['Image','k']).unstack().sort_values('k',axis=1).reindex(df.Image.unique())
m.columns=['_'.join(map(str,i)) for i in m.columns]
print(m)

         Maxval_1  locx_1  locy_1  Maxval_2  locx_2  locy_2
Image                                                      
123.jpg      0.99      56      78      0.92      66      77
223.jpg      0.95      54      71      0.94      56      79
221.jpg      0.93      54      77      0.97      57      72

【讨论】:

  • 我想把它们存回csv文件,怎么做
  • 它工作了,但我的数据现在被排序了,它不是,如何?
  • @KrupaliMistry 只需添加 .reindex(df.Image.unique()) ,更新我的代码
  • @anky_91 在你的代码的第一行,Maxval 是不需要的,对吧?我们可以直接在Image 列上cumcount。只是想了解解决方案的工作原理。
  • @mohansys,correct.i 在一些测试后忘记编辑。我会在某个时候
【解决方案2】:

如果您可以选择将它们存储为值列表,请始终将它们附加到列表中,因为在存储为 CSV 文件时不建议使用相同的列名

【讨论】:

    猜你喜欢
    • 2014-02-26
    • 1970-01-01
    • 2021-07-21
    • 1970-01-01
    • 1970-01-01
    • 2020-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多