【问题标题】: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))).

标签: python pandas list dataframe merge


【解决方案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

【讨论】:

    猜你喜欢
    • 2019-10-12
    • 2021-02-06
    • 2019-09-08
    • 2021-05-01
    • 2020-09-12
    • 1970-01-01
    • 2019-12-30
    • 2018-09-01
    • 2012-09-26
    相关资源
    最近更新 更多