Python for循环使用pandas读取csv

时间:2015-04-10 10:52:22

标签: python pandas

我可以合并2个csv脚本,效果很好。

import pandas

csv1=pandas.read_csv('1.csv')
csv2=pandas.read_csv('2.csv')
merged=csv1.merge(csv2,on='field1')
merged.to_csv('output.csv',index=False)

现在,我想使用与上面相同的方法组合2个以上的csv。 我有CSV列表,我将其定义为此类

import pandas
collection=['1.csv','2.csv','3.csv','4.csv']
for i in collection:
  csv=pandas.read_csv(i)
  merged=csv.merge(??,on='field1')
  merged.to_csv('output2.csv',index=False)

如果超过1 csv我到目前为止还没有工作......我猜它只是列表中的一个问题..任何想法?

1 个答案:

答案 0 :(得分:1)

第一次循环迭代需要特殊处理:

import pandas
collection=['1.csv','2.csv','3.csv','4.csv']

result = None
for i in collection:
  csv=pandas.read_csv(i)
  if result is None:
    result = csv
  else:
    result = result.merge(csv, on='field1')

if result:
  result.to_csv('output2.csv',index=False)

另一种方法是在循环外部加载第一个CSV,但是当集合为空时会中断:

import pandas
collection=['1.csv','2.csv','3.csv','4.csv']

result = pandas.read_csv(collection[0])
for i in collection[1:]:
  csv = pandas.read_csv(i)
  result = result.merge(csv, on='field1')

if result:
  result.to_csv('output2.csv',index=False)

我不知道如何在pandas中创建一个空文档(?),但这也可行:

import pandas
collection=['1.csv','2.csv','3.csv','4.csv']

result = pandas.create_empty() # not sure how to do this
for i in collection:
  csv = pandas.read_csv(i)
  result = result.merge(csv, on='field1')

result.to_csv('output2.csv',index=False)