python - 使用 pandas 合并具有相同列名的两列

标签 python pandas dataframe merge concatenation

我有一个数据框(df),其中两列的长度不同。我想将这两列合并为一列。我该怎么做?

表格如下所示:

<表类=“s-表”> <标题> Col_1 Col_2 Col_1 第 3 列 <正文> A1 12 A1 345 A2 34 A2 980 A3 098 A3 543 A4 8765 A5 765

我想将 Col_1 合并为表中的一列。输出应如下所示:

所需输出:

<表类=“s-表”> <标题> Col_1 Col_2 第 3 列 <正文> A1 12 345 A2 34 980 A3 098 543 A4 8765 A5 765

到目前为止我尝试了什么?

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"]

最佳答案

这是使用 MultiIndexstack 的通用解决方案。

总之,它通过添加唯一的 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/

相关文章:

python - Seaborn:如何为每组创建一个包含 2 个变量的条形图?

python - 更新 Pandas 中满足特定条件的行值

r - 为什么 apply(x, 1, paste0(collapse ="") 在正值之间留下空白?

python - python中的绘图函数

python - 如何附加两个具有不同行数的 DataFrame,填充较短的一个

python - Django 的用户身份验证系统的默认 URL 是什么?

python - 如何随时间创建重复的数据框并将其映射到时间列表?

python - 如何在赋值期间以向量化方式移动输出变量(在 numpy 中)的索引

python - 替换每个新值的值和重复行

r - 如何按组对变量求和