将多个pandas数据帧附加到单个csv,但只在第一次追加时包含头

2024-09-30 16:35:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要创建一个.csv文件并将多个数据帧的子集附加到其中。在

所有数据帧的结构都是相同的,但是我需要创建带头的输出数据集,然后附加所有没有头的后续数据帧。在

我知道我可以使用第一个数据帧中的头来创建输出文件,然后在那里执行一个没有头的append循环,但是我真的很想学习如何以更有效的方式完成这项工作。在

path ='/Desktop/NYC TAXI/Green/*.csv' 
allFiles = glob.glob(path)

for file in allFiles:
    df = pd.read_csv(file, skiprows=[1,2], usecols=np.arange(20))
    metsdf = df.loc[df['Stadium_Code'] == 2]
    yankdf = df.loc[df['Stadium_Code'] == 1]
    with open('greenyankeetaxi.csv','a') as yankeetaxi:
        yankdf.to_csv(yankeetaxi,header=false)
    with open('greenmetstaxi.csv','a') as metstaxi:
        metsdf.to_csv(metstaxi,header=false)
    print(file + " done")

Tags: 文件csv数据pathdfwithcodeopen
1条回答
网友
1楼 · 发布于 2024-09-30 16:35:49

为了有效地实现这一点,您可以使用Merge, join, and concatenate中的一个,这样您就有了两个完整的数据帧(yankdf和{}),然后像以前一样使用to_csv写入csv。在


当前数据

这里有两个数据帧,每个文件一个:

第一个数据帧df

   a  b  c
0  1  2  3
1  4  5  6

第二个数据帧df2

^{pr2}$

使用append

df = df.append(df2) 

上面的行将生成一个可以写入文件的df

   a   b   c
0  1   2   3
1  4   5   6
0  7   6   8
1  9  10  11

简而言之:

  • 循环访问目录中的文件
  • 使用^{}向dataframe添加数据,而不是每次都重新分配
  • 单个数据帧写入文件

相关问题 更多 >