我必须在数据框下方:
import pandas as pd
a = pd.DataFrame([{"name": "John",
"item" : "item1||item2||item3",
"itemVal" : "item1Val||item2Val||item3Val"},
{"name" : "Tom",
"item":"item4",
"itemVal" : "item4Val"
}
])
数据框是这样的:
name item itemVal
John item1||item2||item3 item1Val||item2Val||item3Val
Tom item4 item4Val
我想把这一行分解成多行,这样就变成了这样(注意item
和它的itemVal
需要匹配)。
name item itemVal
John item1 item1Val
John item2 item2Val
John item3 item3Val
Tom item4 item4Val
我在这里查看了其他答案:
Split (explode) pandas dataframe string entry to separate rows
pandas: How do I split text in a column into multiple rows?
但只适用于一列。我如何让它在多列上工作?我正在使用 Pandas 1.0.1 和 Python 3.8
最佳答案
a = a.apply(lambda x: [v.split('||') for v in x]).apply(pd.Series.explode)
print(a)
打印:
name item itemVal
0 John item1 item1Val
0 John item2 item2Val
0 John item3 item3Val
1 Tom item4 item4Val
编辑:如果你只想拆分选定的列,你可以这样做:
exploded = a[['item', 'itemVal']].apply(lambda x: [v.split('||') for v in x]).apply(pd.Series.explode)
print( pd.concat([a['name'], exploded], axis=1) )
关于python - 展开多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61844022/