将列表列表中的值映射到 Pandas 数据框列
Posted
技术标签:
【中文标题】将列表列表中的值映射到 Pandas 数据框列【英文标题】:Map Values from List of Lists to Pandas Dataframe Column 【发布时间】:2021-08-21 17:09:02 【问题描述】:我有以下格式的列表:
l = [[1,2,3,4], [5,6], [7], [8,9,10]]
以及带有以下列的 pandas 数据框
Value |
---|
1 |
3 |
5 |
9 |
我的目标是遍历数据框中值列中的每一行,以查找该值所在的列表。我想创建一个新列,其中包含该值所在的列表中的第一个值。结果看起来像这样。
Value | List_Val |
---|---|
1 | 1 |
3 | 1 |
5 | 5 |
9 | 8 |
任何帮助将不胜感激。谢谢!
【问题讨论】:
【参考方案1】:试试:
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
【讨论】:
【参考方案2】:试试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
【讨论】:
【参考方案3】:让我们使用字典理解和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
【讨论】:
以上是关于将列表列表中的值映射到 Pandas 数据框列的主要内容,如果未能解决你的问题,请参考以下文章
根据每个句子的第一个单词将 pandas 数据框列中的字符串列表分解为新列
循环遍历 pandas 数据框列中的列表元素以在新列中返回列表