python - 连接单列多个不同形状的文件
问题描述
我有 200 个不同的文件,我需要将一列又一列连接到一个文件中。这 200 个文件位于一个目录中,因此我尝试了以下脚本。
path = '/data'
files = os.listdir(path)
files_txt = [os.path.join(path,i) for i in files if i.endswith('tsv')]
## Change it into dataframe
dfs = [pd.DataFrame.from_csv(x, sep='\t')[[6]] for x in files_txt]
##Concatenate it
merged = pd.concat(dfs, axis=1)
但它会引发以下值错误,因为每个文件的形状都不同。我会有一些解决方案。谢谢
这是错误,
ValueError: Shape of passed values is (149, 13864), indices imply (149, 13860)
解决方案
索引包含重复项,然后concat
将失败,因为它将基于索引加入数据框
dfs = [pd.DataFrame.from_csv(x, sep='\t')[[6]].reset_index(drop=True) for x in files_txt]
##Concatenate it
merged = pd.concat(dfs, axis=1)
使用支票
for x in dfs :
print(x.index.is_unique)
为了重现错误
df1=pd.DataFrame({'A':[1,2]})
df2=pd.DataFrame({'A':[1,2]},index=[1,1])
pd.concat([df1,df2],axis=1)
ValueError:传递值的形状为 (2, 5),索引暗示 (2, 3)
推荐阅读
- google-cloud-platform - 如何向 Google AI Notebook 添加环境变量?
- javascript - Python Flask App:如何访问java脚本文件中的容器环境变量
- html - div 类中的背景图像
- python - 传递全局作为参考
- flutter - 是否有任何解决方案可以解决此错误尝试调用:findAncestorStateOfType
()? - high-availability - Artemis 通过队列联合和 HA 复制策略实现负载平衡
- mongodb - 根据主文档中的值仅从子文档中检索某些字段
- for-loop - 飞镖如何在 if 中打破 forEach
- c# - 如何从 ajax 读取传入的 Json 字符串并将其映射到 C# asp.ne MVC 控制器
- ios - 带有嵌入式 CollectionView 的 TableView