我有以下數據幀:
df
Out[69]:
A B C
0 Banana | Apple | Banana No | Yes | Yes Yes | No | Yes
1 Banana No Yes
2 Banana No No
3 Apple | Banana Yes | Yes No | No
4 Apple Yes Yes
頂行(索引 0)和第四行(索引 3)分別代表三個和兩個條目。我想編寫的代碼可以將具有多個條目(由 分隔|
)的每一行拆分為單獨的行,因此每個條目都有一行。
在本例中,我想生成以下 DataFrame:
A B C
0 Banana No Yes
1 Apple Yes No
2 Banana Yes Yes
3 Banana No Yes
4 Banana No No
5 Apple Yes No
6 Banana Yes No
7 Apple Yes Yes
或者:
A B C
0 Banana No Yes
0 Apple Yes No
0 Banana Yes Yes
1 Banana No Yes
2 Banana No No
3 Apple Yes No
3 Banana Yes No
4 Apple Yes Yes
我查看了該explode
函數,但看起來它希望行採用列表格式。
這是我運行時發生的情況print(df.head().to_dict())
:
{'A': {0: 'Banana | Apple | Banana', 1: 'Banana', 2: 'Banana', 3: 'Apple | Banana', 4: 'Apple'}, 'B': {0: 'No | Yes | Yes', 1: 'No', 2: 'No', 3: 'Yes | Yes', 4: 'Yes'}, 'C': {0: 'Yes | No | Yes', 1: 'Yes', 2: 'No', 3: 'No | No', 4: 'Yes'}}
您仍然可以使用explode
,只需按以下方式拆分字符串|
:
df = df.apply(lambda col: col.str.split(r'\s*\|\s*').explode())
輸出:
>>> df
A B C
0 Banana No Yes
0 Apple Yes No
0 Banana Yes Yes
1 Banana No Yes
2 Banana No No
3 Apple Yes No
3 Banana Yes No
4 Apple Yes Yes
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句