簡體   English   中英

Function 如果列包含列表,則復制 dataframe 的行

[英]Function to replicate rows of dataframe if column contains list

我不確定標題的最佳方式。 如果我有一個 dataframe 和其中一列,我們稱它為“標簽”,可能包含列表也可能不包含。 如果“標簽”是一個列表,那么我想復制該行的次數與“標簽”列中的唯一項一樣多,然后用每行的唯一項替換該列中的項目。

例子:

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'])

會導致:
原始數據框

我需要一個 function 將 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM