gpt4 book ai didi

python - 在 python 中使用 pandas 将 csv 文件附加到一个

转载 作者:太空狗 更新时间:2023-10-30 00:49:04 25 4
gpt4 key购买 nike

我在一个目录中有 n 个文件,我需要合并成一个文件。它们的列数相同,例如test1.csv的内容是:

test1,test1,test1  
test1,test1,test1
test1,test1,test1

同理,test2.csv的内容为:

test2,test2,test2  
test2,test2,test2
test2,test2,test2

我希望 final.csv 看起来像这样:

test1,test1,test1  
test1,test1,test1
test1,test1,test1
test2,test2,test2
test2,test2,test2
test2,test2,test2

但结果却是这样的:

test file 1,test file 1.1,test file 1.2,test file 2,test file 2.1,test file 2.2  
,,,test file 2,test file 2,test file 2
,,,test file 2,test file 2,test file 2
test file 1,test file 1,test file 1,,,
test file 1,test file 1,test file 1,,,

谁能帮我弄清楚这是怎么回事?我在下面粘贴了我的代码:

import csv
import glob
import pandas as pd
import numpy as np

all_data = pd.DataFrame() #initializes DF which will hold aggregated csv files

for f in glob.glob("*.csv"): #for all csv files in pwd
df = pd.read_csv(f) #create dataframe for reading current csv
all_data = all_data.append(df) #appends current csv to final DF

all_data.to_csv("final.csv", index=None)

最佳答案

我觉得还有更多的问题:

  1. 我删除了 import csvimport numpy as np,因为在这个演示中它们没有被使用(但也许它们丢失了,所以它们可以被导入)
  2. 我创建了所有数据帧 dfs 的列表,其中数据帧由 dfs.append(df) 附加。然后我使用函数 concat 将这个列表连接到最终数据框。
  3. 函数read_csv我添加了参数 header=None,因为主要问题是 read_csv 将第一行读取为 header
  4. 在函数 to_csv 中,我添加了参数 header=None 以省略 header 。
  5. 我将文件夹 test 添加到最终目标文件,因为如果使用函数 glob.glob("*.csv") 您应该将输出文件作为输入文件读取。

解决方法:

import glob
import pandas as pd

all_data = pd.DataFrame() #initializes DF which will hold aggregated csv files

#list of all df
dfs = []
for f in glob.glob("*.csv"): #for all csv files in pwd
#add parameters to read_csv
df = pd.read_csv(f, header=None) #create dataframe for reading current csv
#print df
dfs.append(df) #appends current csv to final DF
all_data = pd.concat(dfs, ignore_index=True)
print all_data
# 0 1 2
#0 test1 test1 test1
#1 test1 test1 test1
#2 test1 test1 test1
#3 test2 test2 test2
#4 test2 test2 test2
#5 test2 test2 test2
all_data.to_csv("test/final.csv", index=None, header=None)

下一个解决方案类似。
我将参数 header=None 添加到 read_csvto_csv 并将参数 ignore_index=True 添加到 append.

import glob
import pandas as pd

all_data = pd.DataFrame() #initializes DF which will hold aggregated csv files

for f in glob.glob("*.csv"): #for all csv files in pwd
df = pd.read_csv(f, header=None) #create dataframe for reading current csv
all_data = all_data.append(df, ignore_index=True) #appends current csv to final DF
print all_data
# 0 1 2
#0 test1 test1 test1
#1 test1 test1 test1
#2 test1 test1 test1
#3 test2 test2 test2
#4 test2 test2 test2
#5 test2 test2 test2

all_data.to_csv("test/final.csv", index=None, header=None)

关于python - 在 python 中使用 pandas 将 csv 文件附加到一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34243259/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com