gpt4 book ai didi

python - 使用列表 Python 映射列数据框

转载 作者:太空宇宙 更新时间:2023-11-04 00:32:15 28 4
gpt4 key购买 nike

如何创建新列并设置值,这些值是将此数据框与另一个对象(例如列表 python 列表)映射的结果?

我有 Pandas 数据框:

{'a': [15,10,11,9,7,8], 'b':['smth','smth','smth','smth', 'smth', 'smth'].

和列表列表:

[[15,10], [11], [9,7,8]]

我想在我的数据框中创建新列,它将包含 3 个大类,就像我的列表列表中一样。

我的意思是,我想得到这个:

{'a': [15,10,11,9,7,8], 'b':['smth','smth','smth','smth', 'smth', 'smth',
'new_column': [0,0,1,2,2,2]}

最佳答案

您可以使用 map通过 dict 创建的 dict,列表的值必须是唯一的:

df = pd.DataFrame({'a': [15,10,11,9,7,8], 'b':['smth','smth','smth','smth', 'smth', 'smth']})

L = [[15,10], [11], [9,7,8]]
#https://stackoverflow.com/q/45349225/2901002
d = { v : i for i,vs in enumerate(L) for v in vs}
#alternative solution
#d = {v: i for i in range(len(L)) for v in L[i]}
print (d)
{7: 2, 8: 2, 9: 2, 10: 0, 11: 1, 15: 0}

df['new_column'] = df['a'].map(d)
print (df)
a b new_column
0 15 smth 0
1 10 smth 0
2 11 smth 1
3 9 smth 2
4 7 smth 2
5 8 smth 2

关于python - 使用列表 Python 映射列数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45348871/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com