我正在尝试将同一行中具有多个值的Dataframe转换为多行。以下是我的示例数据的样子:
import pandas as pd
df = pd.DataFrame({ 'fruits':["apples",
"bananas // oranges",
"kiwi",
"pears // bananas"], 'quantity':[24,5//34,2,26/5], 'price':[12,90 // 30, 64, 87 // 12]})
输出:
fruits quantity price
0 apples 24 12
1 bananas // oranges 5 // 34 90 //30
2 kiwi 2 64
3 pears // bananas 26 // 5 87 // 12
预期输出:
fruits quantity price
0 apples 24 12
1 bananas 5 90
2 oranges 34 30
3 kiwi 2 64
4 pears 26 87
5 bananas 5 12
基于阅读的几篇文章,我能够执行以下操作:
df = df.join(pd.DataFrame(df.'fruits'.str.split(',', expand=True).stack().reset_index(level=2, drop=True)
,columns=['fruits_')).drop('fruits',1).rename(columns=str.strip).reset_index(drop=True)
如果我想爆炸Dataframe中的一列,则上面的方法很好用,但是我不确定如何针对我的情况对多列进行处理。
更新:
df = df.set_index(['fruits'])
df = df.astype(str) + '// '
df = df['quantity'].str.split('//', expand=True).stack().reset_index(-1, drop=True).replace(' ', np.nan).dropna().reset_index()
df