将值从列表列表映射到数据框列

2024-03-29 05:12:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下格式的列表:

l = [[1,2,3,4], [5,6], [7], [8,9,10]]

以及具有以下列的数据帧

^{tb1}$

我的目标是循环遍历dataframe中value列中的每一行,以找到值所在的列表。我想用列表中的第一个值创建一个新列。结果会像这样

^{tb2}$

任何帮助都将不胜感激。谢谢


Tags: 数据目标dataframe列表value格式tb2tb1
3条回答

试试explode,然后map

s = pd.Series(l).explode()
s.index = s.groupby(level=0).transform('first')
df['List_val'] = df['Value'].map(dict(zip(s,s.index)))
df
Out[36]: 
   Value  List_val
0      1         1
1      3         1
2      5         5
3      9         8

尝试:

l = [[1, 2, 3, 4], [5, 6], [7], [8, 9, 10]]

df["List_Val"] = df["Value"].apply(
    lambda x: next((subl[0] for subl in l if x in subl), np.nan)
)

print(df)

印刷品:

   Value  List_Val
0      1         1
1      3         1
2      5         5
3      9         8

让我们使用字典理解和map

df['list_val'] = df['Value'].map({v:i[0] for i in l for v in i})

输出:

   Value  list_val
0      1         1
1      3         1
2      5         5
3      9         8

相关问题 更多 >