微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如果列包含列表,则复制数据帧的行的函数

如何解决如果列包含列表,则复制数据帧的行的函数

我不确定标题的最佳方法。如果我有一个数据框和其中一列,可以称之为“标签”,它可以包含列表,也可以不包含列表。如果“标签”是一个列表,那么我想复制该行的次数与“标签”列中唯一项的重复次数相同,然后将该列中的项目替换为每一行的唯一项。

示例:

import pandas as pd 

# create dummy dataframe
df = {'Date': ['2020-10-28'],'Item': 'My_fake_item','Tags': [['A','B']],'Count': 3}

df = pd.DataFrame(df,columns=['Date','Item','Tags','Count'])

将导致:

Original Dataframe

我需要一个将数据框更改为此的函数

New Dataframe

解决方法

例如,应用explode方法

df_exploded = (
        df.set_index(["Date","Item","Count"])
        .apply(pd.Series.explode)
        .reset_index()
    )

将导致

df_exploded
>>>
    Date        Item         Count  Tags
0   2020-10-28  My_fake_item    3   A
1   2020-10-28  My_fake_item    3   B

,并且无需检查元素是否为列表或列上的

import pandas as pd 

# create dummy dataframe
df = {'Date': ['2020-10-28','2020-11-01'],'Item': ['My_fake_item','My_other_item'],'Tags': [['A','B'],'C'],'Count': [3,5]}

df = pd.DataFrame(df,columns=['Date','Item','Tags','Count'])

将导致

          Date  Item          Count Tags
0   2020-10-28  My_fake_item    3   A
1   2020-10-28  My_fake_item    3   B
2   2020-11-01  My_other_item   5   C

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。