如何将值列表附加到数据框中的列表列
Posted
技术标签:
【中文标题】如何将值列表附加到数据框中的列表列【英文标题】:How to append list of values to a column of list in dataframe 【发布时间】:2022-01-17 07:13:35 【问题描述】:我想将列表值附加到数据框中的列表列。可以说,我有两个数据框 first_df
和 second_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
【讨论】:
以上是关于如何将值列表附加到数据框中的列表列的主要内容,如果未能解决你的问题,请参考以下文章