python - 将多个数据框合并在一起
问题描述
我有多个 (n) 数据帧,每个数据帧具有可变行长度和 3 列。我只想要每个数据框的第一列,所以我使用 df.drop 删除了其他列。
我想将它们合并到一个具有 n 列的数据框中。我使用 pd.concat 进行合并。
df1.drop(columns=['col2' ,'col3']).to_csv('df1.csv', sep=';')
df2.drop(columns=['col2', 'col3']).to_csv('df2.csv', sep=';')
pd.concat([pd.concat([df1.drop(columns=['col2','col3']),
df2.drop(columns=['col2','col3'])] ,axis=1)])\
.to_csv('merged.csv', sep=';')
它给了我以下输出为 csv 文件:
col1 (df1) col1 (df1)
0 0.0
1 0.055
2 0.096
3 0.131
2074 70.997
2075 71.002
2076 71.065
2077 71.101
所以你看到它只是将列添加为行。例如,第 3 行在第 2 列为空。并且第 1 列中的第 2074 行为空。我认为axis = 1可以解决这个问题,但它没有。
预期输出:
col1 (df1) col1 (df1)
0 0.0 70.997
1 0.055 71.002
2 0.096 71.065
3 0.131 71.101
如果我尝试axis = 1, ignoreIndex=True
将列名更改为 0 和 1。
解决方案
reset_index
在由和 参数创建的两个 DataFrame 中需要相同的索引值reset_index(drop=True)
:
df3 = pd.concat([df1['col1'].reset_index(drop=True),
df2['col1'].reset_index(drop=True)], axis=1)
df3.columns = ['col1 (df1)','col1 (df2)']
print (df3)
col1 (df1) col1 (df2)
0 0.000 70.997
1 0.055 71.002
2 0.096 71.065
3 0.131 71.101
推荐阅读
- python - 有没有办法在 IDLE 中打印带有网格的数据框?
- javascript - 单击按钮时未显示引导加载图标
- javascript - 对javascript中的do while循环感到困惑
- java - Firebase 功能不适用于物理设备,但适用于模拟器
- javascript - 协助解决 Javascript 问题(培训中的学生)
- python - 数据框从旧行和旧列转换为具有新列的一行
- sql - if else sql中的情况
- python - ValueError:模型的特征数量必须与输入匹配。模型 n_features 为 11,输入 n_features 为 2
- html - js打印只能在手机模式下打开,如何在pc模式下打印?
- c++ - c++ 错误:没有匹配的函数来调用我的图形代码的...