【问题标题】:Duplicate DataFrame Rows based on Column values within each cell根据每个单元格中的列值复制 DataFrame 行
【发布时间】:2020-03-20 12:28:00
【问题描述】:

我有一个如下所示的数据框,我必须使用逗号作为分隔符来复制行。看到下面的数据框就更容易理解了!:

ID      Fruit
10000   Apple, Orange, Pear
10001   Apple, Banana

我想要下面的数据框:

ID      Fruit
10000   Apple 
10000   Orange
10000   Pear
10001   Apple 
10001   Banana

【问题讨论】:

标签: python dataframe


【解决方案1】:

试试:

df['Fruit']=df['Fruit'].str.split(", ")
df=df.explode('Fruit')

输出:

      ID   Fruit
0  10000   Apple
0  10000  Orange
0  10000    Pear
1  10001   Apple
1  10001  Banana

【讨论】:

    【解决方案2】:

    如果df 看起来像这样:

    >>> df = pd.DataFrame({'ID': [10000, 10001], 'Fruit': ['Apple, Orange, Pear', 'Apple, Banana']})
    >>> print(df)
          ID                Fruit
    0  10000  Apple, Orange, Pear
    1  10001        Apple, Banana
    

    您可以使用pandas.DataFrame.apply() 方法创建一个新的列表列,该列表由具有新行的字典组成。之后,您可以连接这些列表,以便从中创建一个新的数据框。代码如下:

    >>> df['new'] = df.apply(lambda row: [{'ID': row.ID, 'Fruit': item} for item in row.Fruit.split(', ')], axis=1)
    >>> df_new = pd.DataFrame(df.new.sum())
    >>> print(df_new)
          ID   Fruit
    0  10000   Apple
    1  10000  Orange
    2  10000    Pear
    3  10001   Apple
    4  10001  Banana
    

    【讨论】:

    猜你喜欢
    • 2019-09-19
    • 2022-12-10
    • 1970-01-01
    • 1970-01-01
    • 2020-11-02
    • 2013-12-11
    • 2014-11-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多