将选定的 csv 行附加到 python 中的另一个 csv

Append selected row of csv to another csv in python

我正在尝试编写一个程序,它将一个 csv 文件的 selected 列作为一行附加到另一个 csv 文件。

我有这个代码:

def append_pandas(s,d):
    import pandas as pd
    df = pd.read_csv(s, sep=';', header=None)
    df_t = df.T
    df_t.columns = df_t.iloc[0]
    df_new = df_t.drop(0)
    pdb = pd.read_csv(d, sep=';')
    newpd = pdb.append(df_new)
    newpd.to_csv(d)

只对第一个文件执行此操作,如下所示:

这正是我想要的。但是当添加下一个文件时,会发生这样的事情:

以及以下文件:

我很困惑。如何使它们逐行对齐?.. 请帮助:(

P.S。我的初始 csv 文件采用这种格式(这就是为什么我需要 select 特定列 - 单元格计数):

因为有一次,您使用默认分隔符 ',' 保存了 newpd(通过不指定分隔符),而下次您读回时,您使用分隔符读取它';' 这当然是不正确的,因为它应该是 ','.

解决方法是始终使用 ';' 作为分隔符,因此您需要像这样 to_csv

newpd.to_csv(d, sep=';')

如果您想将 ',' 用于组合数据框,您只需要注意何时读取分隔符 ';' 以及何时读取 ','.

第二种方法

如果 files 是您要合并的所有 csv 文件的文件路径列表,您实际上可以这样做

newpd = pd.concat([pd.read_csv(file, sep=';').set_index('ID').T for file in files])

newpd.to_csv('name.csv', sep=',') # or ';'

这里读取每个文件,设置'ID'为index,.T让index成为header,最后将所有得到的dataframes拼接成一个,保存!