Lau*_*gel 2 python merge multiple-columns dataframe pandas
我有一个像这样形成的数据框:
+------+------+------+--------+--------+--------+--------+
| 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 |
+------+------+------+--------+--------+--------+--------+
Run Code Online (Sandbox Code Playgroud)
现在我想将列合并为一个,就像所有 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)
Run Code Online (Sandbox Code Playgroud)
如果所有 3 列都存在,则此方法有效。但显然不是如果我想将 Col2 与 Col2.1 和 Col2.2 合并,因为它们不存在。
有没有办法用 Pandas 或 python 来用一些函数来完成这个任务,还是我需要在很多 if 情况下走很长的路?
让我们用字符串操作和groupby使用axis=1,并max:
df.groupby(df.columns.str[:4], axis=1).max()
Run Code Online (Sandbox Code Playgroud)
输出:
| | Col1 | Col2 | Col3 |
|---:|-------:|-------:|-------:|
| 0 | 1 | 0 | 1 |
| 1 | 1 | 1 | 1 |
| 2 | 1 | 1 | 1 |
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
50 次 |
| 最近记录: |