python - 读取多个 CSV 文件并水平连接它们
问题描述
我有几个 csv 格式的文件,例如100-age.csv 100-rel.csv 100-gender.csv 101-age.csv ... 101-gender.csv ... 482-rel.csv 482-gender.csv
等。我必须为每个索引创建新文件,即100-combo.csv
哪个索引会100-age.csv 100-rel.csv
水平100-gender.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)
推荐阅读
- javascript - Microsoft Dynamics 2016 - Javascript 横幅
- javascript - 如何在不丢失样式的情况下将 material-ui react 组件包装到 Web 组件?
- c++ - 在线 C++ 标准草案的更新会使指向它的链接失效吗?
- php - 如何在设定的时间段内过滤 facebook 潜在客户
- php - 如何在目录“vendor”Laravel 中扩展类“BinaryFileResponse”?
- powershell - Get-VPNConnection 显示错误的连接状态?
- database - 使用 LIKE 运算符在另一个选择中选择
- c# - 有没有办法使用 Aspose.PDF C# 从 PDF 中导出复选框值?
- python - 如何将每周分组的数据添加到数据库中?
- php - 如何将多个查询合并为一个?