【问题标题】:How to convert columns values of a csv file to different format structure in pandas?如何将 csv 文件的列值转换为 pandas 中的不同格式结构?
【发布时间】:2019-03-13 13:26:51
【问题描述】:

我在一个文件夹中有 100 个 csv 文件。它们都有一个列name,它是文件名和列z值。

import pandas as pd
df = pd.read_csv("ProfileGraph1.csv")
df.head()

    Name    Z
0   1   -3.687422
1   1   -3.688351
2   1   -3.684376
3   1   -3.691209
4   1   -3.693000

df = pd.read_csv("ProfileGraph2.csv")
df.head()

    Name    Z
0   2   -3.691955
1   2   -3.694228
2   2   -3.692559
3   2   -3.699092
4   2   -3.698381

df = pd.read_csv("ProfileGraph3.csv")
df.head()

    Name    Z
0   3   -3.693265
1   3   -3.694765
2   3   -3.693598
3   3   -3.697865
4   3   -3.699872

我想遍历它们中的每一个并将每个 csv 文件的 Z 列转换为一行并将其存储在一个新的 csv 文件中,并将它们全部附加到一个新的 csv 文件中。这是我手动制作的输出:

df = pd.read_csv("filename.csv")
df.head()

  Name      1            2           3          4           5
0   1   -3.687422   -3.688351   -3.684376   -3.691209   -3.693000
1   2   -3.691955   -3.694228   -3.692559   -3.699092   -3.698381
2   3   -3.693265   -3.694765   -3.693598   -3.697865   -3.699872

【问题讨论】:

    标签: pandas csv export-to-csv


    【解决方案1】:

    首先循环所有文件列表并通过concat创建大DataFrame,然后通过cumcount重塑unstack计数器:

    import glob
    
    files = glob.glob('files/*.csv')
    dfs = [pd.read_csv(fp) for fp in files]
    
    df = pd.concat(dfs, ignore_index=True)
    
    df = df.set_index(['Name',df.groupby('Name').cumcount()])['Z'].unstack().reset_index()
    

    【讨论】:

      猜你喜欢
      • 2023-04-06
      • 1970-01-01
      • 2020-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-04
      • 2019-08-11
      • 1970-01-01
      相关资源
      最近更新 更多