gpt4 book ai didi

python - 如果 Pandas 数据框列中存在列表值列表,请将它们替换为另一个 Pandas 列中的值

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

我有一个列表列表,其中包含以下类型的词标记:

[['java_developer'],
['ETL', 'database_administrator'],
...
['web-developer', 'c#', 'ms_sql']]

我还有一个键值 pandas 数据框,其中第一列键和第二列键是值。例如:

     Key                      Value
0 java_developer java
1 web-developer web
2 database_administrator database
3 ETL ETL
4 ms_sql database
... ... ...
100 c# c#

我想收到以下类型的列表:

[['java'],
['ETL', 'database'],
...
['web', 'c#', 'database']]

如何实现?

最佳答案

使用 getDataFrame 中的缺失值添加一些值,例如 None:

#added val to last sublist for better sample
L = [['java_developer'],
['ETL', 'database_administrator'],
['web-developer', 'c#', 'ms_sql', 'val']]

#create dictionary from DataFrame
d = df.set_index('Key')['Value'].to_dict()
print (d)
{'java_developer': 'java', 'web-developer': 'web',
'database_administrator': 'database', 'ETL': 'ETL',
'ms_sql': 'database', 'c#': 'c#'}

#in nested list comprehension repalce by dict
L1 = [[d.get(y, None) for y in x] for x in L]
print (L1)
[['java'], ['ETL', 'database'], ['web', 'c#', 'database', None]]

或者删除不匹配的值添加过滤:

L1 = [[d.get(y) for y in x if y in d] for x in L]
print (L1)
[['java'], ['ETL', 'database'], ['web', 'c#', 'database']]

如果字典中不存在需要相同的值:

L1 = [[d.get(y, y) for y in x] for x in L]
print (L1)
[['java'], ['ETL', 'database'], ['web', 'c#', 'database', 'val']]

关于python - 如果 Pandas 数据框列中存在列表值列表,请将它们替换为另一个 Pandas 列中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51888789/

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