我有一个数据框(df),其中两列的长度不同。我想将这两列合并为一列。我该怎么做?
表格如下所示:
我想将 Col_1 合并为表中的一列。输出应如下所示:
所需输出:
到目前为止我尝试了什么?
df1 = df.columns[0]
df2 = df.columns[2]
df_merge_col = pd.merge(df1, df2, on='Col_1')
或
df["Col_1"] = df["Col_1"].astype(str) + df["Col_1"]
最佳答案
这是使用 MultiIndex
和 stack
的通用解决方案。
总之,它通过添加唯一的 ID 来消除重复的列,然后我们使用该 ID 来堆叠
数据。剩下的只是排序/清理。
(df.set_axis(pd.MultiIndex.from_arrays([df.columns,
df.groupby(level=0, axis=1).cumcount()
]), axis=1)
.stack(level=1)
.sort_index(level=1)
.droplevel(1)
.drop_duplicates(subset=df.columns[df.columns.duplicated()])
)
输出:
Col_1 Col_2 Col_3
0 A1 12.0 345.0
1 A2 34.0 980.0
2 A3 98.0 543.0
3 A4 8765.0 NaN
4 A5 765.0 NaN
关于python - 使用 pandas 合并具有相同列名的两列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69299416/