在寻找答案后,尝试一切都无法找到出路,所以就这样吧。 我有一个* .txt文件列表,我想按列合并。我100%确定它们具有相同的结构,如下所示
File1
date | time | model_name1
1850-01-16 | 12:00:00 | 0.10
File2
date | time | model_name2
1850-01-16 | 12:00:00 | 0.50
File3..... and so on
注意:垂直条只是为了清晰起见。
现在我的输出应该是这样的:
Output
date | time | model_name1 | model_name2
1850-01-16 | 12:00:00 | 0.10 | 0.50
使用以下代码
out_list4 = os.listdir(out_directory)
df_list = [pd.read_table(out_path+os.fsdecode(file_x), sep='\s+') for file_x in out_list4]
df_merged = reduce(lambda left,right: ,
pd.merge(left,right,on=['date'], how='outer'), df_list)
pd.DataFrame.to_csv(df_merged, out_path+'merged.txt', sep='\t', index=False)
我管理以下输出:
Output
date | time_x | model_name1 |time_y | model_name2
1850-01-16 | 12:00:00 | 0.10 |12:00:00| 0.50
正如所料,因为我只有“”on = ['date']“”。
现在,如果我尝试将时间写为第二个键,如下所示:“”on = ['date','time']“”,它会因以下错误而崩溃:
Key error:'time'
以及一长串追溯。
我尝试将left_on / righ_on置于“date”作为索引处理的情况下。没用我知道问题不在于文件,结构是对的,它是代码。任何帮助都感激不尽。对于
的可读性感到抱歉答案 0 :(得分:1)
所以,问题出在之前。我之前已将“”out_list4“”定义为列表:
out_list4 = []
最后它弄得一团糟。列表中的每个数据元素应该具有1872 x 3的大小,但最后它再次添加它们使得最后一个条目是1872 x 12并且没有'时间'标题。 将“”out_list4“”的定义更改为:
{{1}}
做了这个伎俩。提示来自Combine a list of pandas dataframes to one pandas dataframe。