Python 读取多个CSV文件并水平连接它们
我有一些csv格式的文件,比如Python 读取多个CSV文件并水平连接它们,python,regex,linux,pandas,csv,Python,Regex,Linux,Pandas,Csv,我有一些csv格式的文件,比如100-age.csv 100-rel.csv 100-gender.csv 101-age.csv。。。101-gender.csv。。。482-rel.csv 482 gender.csv等。我必须为每个索引创建新文件,即将加入100-age.csv 100 rel.csv和100 gender.csv的100 combo.csv。我可以使用pandas为一个文件执行此操作 import pandas as pd age = pd.read_csv('100-
100-age.csv 100-rel.csv 100-gender.csv 101-age.csv。。。101-gender.csv。。。482-rel.csv 482 gender.csv
等。我必须为每个索引创建新文件,即将加入100-age.csv 100 rel.csv
和100 gender.csv
的100 combo.csv
。我可以使用pandas为一个文件执行此操作
import pandas as pd
age = pd.read_csv('100-age.csv', header=None)
gender = pd.read_csv('100-gender.csv', header=None)
rel = pd.read_csv('100-rel.csv', header=None)
combined = pd.concat([age, gender, rel], axis=1)
combined.to_csv('100-combo.csv', header=None, index=None)
使用linux时,有一些方法,如cat
,它们只垂直添加,即堆叠在彼此的顶部,还有paste
命令,它们会干扰这些文件中的格式设置
def merged_data(i):
age = pd.read_csv(path+str(i)+'.pdf-age.csv', header=None, error_bad_lines=False)
gender = pd.read_csv(path+str(i)+'.pdf-gender.csv', header=None, error_bad_lines=False)
rel = pd.read_csv(path+str(i)+'.pdf-rel.csv', header=None, error_bad_lines=False)
combined = pd.concat([age, gender, rel], axis=1)
combined['block'] = str(i)
combined.to_csv(path+str(i)+'-combo.csv', header=None, index=None)
for num in range(1,483):
merged_data(num)
我得到了这个错误
EmptyDataError: No columns to parse from file
但是,我知道我所有的数据文件都有一些或其他值,我这样做了,得到了我想要的。我曾经
import pandas as pd
import numpy as np
from pandas.io.common import EmptyDataError
def merged_data(i):
try:
age = pd.read_csv(path+str(i)+'.pdf-age.csv', header=None, error_bad_lines=False, delim_whitespace=True)
except EmptyDataError:
age = pd.DataFrame()
try:
gender = pd.read_csv(path+str(i)+'.pdf-gender.csv', header=None, error_bad_lines=False, delim_whitespace=True)
except EmptyDataError:
gender = pd.DataFrame()
try:
rel = pd.read_csv(path+str(i)+'.pdf-rel.csv', header=None, error_bad_lines=False, delim_whitespace=True)
except EmptyDataError:
rel = pd.DataFrame()
combined = pd.concat([age, gender, rel], axis=1)
combined['block'] = str(i)
combined.to_csv(path+str(i)+'-combo.csv', header=None, index=None)
for num in range(1,483):
merged_data(num)
我相信pandas中的代码是可以使用的,但是如何对多个文件执行此操作,如何编写循环?您不知道如何连接字符串?我知道,在这种情况下,我在哪里使用它?
“100 age.csv”
只是str(100)+“-age.csv”
我相信您可以找到一个更适合您需要的范围。
我还需要在连接时创建一列,所有行中都有索引号i,代码是否相同?