我有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)
答案 0 :(得分:0)
索引包含重复项,然后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)