我正在尝试将大量子CSV合并为一个CSV。
我希望它们以行对齐方式合并。
我试过了pd.concat([df1, df4], axis=1)
但结果CSV的数据是最后一个子CSV的数据。它没有合并。
我想要的是什么:
A B AB
A + B -> AB
A B AB
以下是代码:
def listdirInMac(path):
os_list = os.listdir(path)
for item in os_list:
if item.startswith('.') and os.path.isfile(os.path.join(path, item)):
os_list.remove(item)
os_list.sort()
return os_list
root='/Users/alex/Documents/data/want/test/'
result=pd.DataFrame()
pieces=[]
#all txt data will append on this variable
for file in listdirInMac(root):
if 'CSV' in file:
pathname=os.path.join(root,file) #file path
#print pathname
temp=pd.read_csv(pathname,usecols=[1],header=None) # read csv
result = pd.concat([newfile,temp],axis=1)
result.to_csv('/Users/alex/Documents/data/1/result.csv')
答案 0 :(得分:2)
我建议您在循环中阅读数据框,并在外面只调用pd.concat
。
pieces = []
for file in listdirInMac(root):
...
pieces.append(temp)
现在您已拥有DataFrame列表,只需将其传递给concat
:
df = pd.concat(pieces, axis=1)
df.to_csv(...)