熊猫-将逗号分隔的行转换为数据框中的多行

时间:2019-06-23 08:10:44

标签: pandas

我正在尝试将同一行中具有多个值的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

0 个答案:

没有答案