如何将值列表附加到数据框中的列表列

Posted

技术标签:

【中文标题】如何将值列表附加到数据框中的列表列【英文标题】:How to append list of values to a column of list in dataframe 【发布时间】:2022-01-17 07:13:35 【问题描述】:

我想将列表值附加到数据框中的列表列。可以说,我有两个数据框 first_dfsecond_df 并希望 expected 如下。

例如。

first_df =
|  date | value
| 01/01 | [1,2]
| 01/02 | nan
| 01/03 | [3]
| 01/04 | [2]
| 01/05 | nan
| 01/01 | nan

second_df = 
|  date | value
| 01/01 | [2,3]
| 01/02 | [1,2]
| 01/03 | [1,2]
| 01/04 | nan
| 01/05 | [1,2]
| 01/06 | nan

expected = 
|  date | value
| 01/01 | [1,2,3]
| 01/02 | [1,2]
| 01/03 | [1,2,3]
| 01/04 | [2]
| 01/05 | [1,2]
| 01/06 | nan

【问题讨论】:

pd.concat([df1.explode('date'), df2.explode('date')]).groupby('date')['value'].agg(lambda x: list(set(x))). 【参考方案1】:

使用.concat 连接两个数据帧,然后在'date' 上使用.groupby。然后应用一个自定义函数,如果存在列表,则在每个组中添加列表(即日期):

def extend_lists(x):
    out = []
    for l in x:
        if isinstance(l, list):
            out.extend(l)
    return list(set(out)) if out else np.nan

out = pd.concat([df1,df2]).groupby('date')['value'].apply(extend_lists).reset_index()

输出:

    date      value
0  01/01  [1, 2, 3]
1  01/02     [1, 2]
2  01/03  [1, 2, 3]
3  01/04        [2]
4  01/05     [1, 2]
5  01/06        NaN

【讨论】:

以上是关于如何将值列表附加到数据框中的列表列的主要内容,如果未能解决你的问题,请参考以下文章

如何将列表项附加到数据框中的特定列?

将值附加到字典中的一个列表 将值附加到字典中的所有列表

如何在使用while循环时将值附加到字典中的列表?

迭代循环并将列表添加到新行或新列中的数据框

附加到熊猫数据框中的列表

将数据框列中的值附加到列表