gpt4 book ai didi

Python:将 Dataframe 的最多 3 列合并为 1 列,但 3 列中的任何一个都不存在

转载 作者:行者123 更新时间:2023-12-02 00:06:57 25 4
gpt4 key购买 nike

我有一个像这样形成的数据框:

+------+------+------+--------+--------+--------+--------+
| Col1 | Col2 | Col3 | Col1.1 | Col2.1 | Col3.1 | Col1.2 |
+------+------+------+--------+--------+--------+--------+
| 0 | 0 | 1 | 1 | 0 | 0 | 0 |
| 1 | 1 | 0 | 0 | 0 | 1 | 0 |
| 0 | 0 | 1 | 0 | 1 | 0 | 1 |
+------+------+------+--------+--------+--------+--------+

现在我想将这些列合并为一列,就像将所有 Col1.* 合并到 Col1 中,其中有一个 1:

+------+------+------+--------+--------+
| Col1 | Col2 | Col3 | Col2.1 | Col3.1 |
+------+------+------+--------+--------+
| 1 | 0 | 1 | 0 | 0 |
| 1 | 1 | 0 | 0 | 1 |
| 1 | 0 | 1 | 1 | 0 |
+------+------+------+--------+--------+

df['Col1'] = df[['Col1', 'Col1.1', 'Col1.2']].max(axis=1)

如果所有 3 列都存在,则此方法有效。但如果我想将 Col2 与 Col2.1 和 Col2.2 合并,显然不行,因为它们不存在。

有没有办法用 pandas 或 python 来通过某些函数来完成这个任务,或者我是否需要在很多 if 情况下走很长的路?

最佳答案

让我们使用字符串操作和 groupby 以及 axis=1max:

df.groupby(df.columns.str[:4],  axis=1).max()

输出:

|    |   Col1 |   Col2 |   Col3 |
|---:|-------:|-------:|-------:|
| 0 | 1 | 0 | 1 |
| 1 | 1 | 1 | 1 |
| 2 | 1 | 1 | 1 |

关于Python:将 Dataframe 的最多 3 列合并为 1 列,但 3 列中的任何一个都不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60158632/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com