繁体   English   中英

根据条件将一列拆分为多列

[英]Split a column into multiple columns with condition

我有一个关于在有条件的 Pandas 中将列拆分为多行的问题。 例如,我倾向于执行以下操作,但使用 for 循环需要很长时间

| Index | Value |
| ----- | ----- |
|   0   | 1     |
|   1   | 1,3   |
|   2   | 4,6,8 |
|   3   | 1,3   |
|   4   | 2,7,9 |

进入

| Index | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| ----- | - | - | - | - | - | - | - | - | - |
|   0   | 1 |   |   |   |   |   |   |   |   |
|   1   | 1 |   | 3 |   |   |   |   |   |   |
|   2   |   |   |   | 4 |   | 6 |   | 8 |   |
|   3   | 1 |   | 3 |   |   |   |   |   |   |
|   4   |   | 2 |   |   |   |   | 7 |   | 9 |

我想知道是否有任何包可以帮助解决这个问题,而不是编写一个 for 循环来映射所有索引。

假设“值”列包含字符串,您可以像这样使用str.splitpivot

value = df["Value"].str.split(",").explode().astype(int).reset_index()
output = value.pivot(index="index", columns="Value", values="Value")
output = output.reindex(range(value["Value"].min(), value["Value"].max()+1), axis=1)

>>> output

Value    1    2    3    4   5    6    7    8    9
index                                            
0      1.0  NaN  NaN  NaN NaN  NaN  NaN  NaN  NaN
1      1.0  NaN  3.0  NaN NaN  NaN  NaN  NaN  NaN
2      NaN  NaN  NaN  4.0 NaN  6.0  NaN  8.0  NaN
3      1.0  NaN  3.0  NaN NaN  NaN  NaN  NaN  NaN
4      NaN  2.0  NaN  NaN NaN  NaN  7.0  NaN  9.0
输入df
df = pd.DataFrame({"Value": ["1", "1,3", "4,6,8", "1,3", "2,7,9"]})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM