Python 获取数据帧列中的字典的所有键
我有一个带有一个文本列的数据框。我必须获得匹配值的键作为新列。使用下面提供的代码,我只得到一个键,它将转到下一行,而不给出第二个键。请参阅下面我尝试过的示例代码。任何帮助都将不胜感激Python 获取数据帧列中的字典的所有键,python,Python,我有一个带有一个文本列的数据框。我必须获得匹配值的键作为新列。使用下面提供的代码,我只得到一个键,它将转到下一行,而不给出第二个键。请参阅下面我尝试过的示例代码。任何帮助都将不胜感激 Dict_new = { 'key1': ['orange', 'yellow', 'blue'], 'key2': ['red', 'saffron', 'purple'], 'key3': ['white', 'gr
Dict_new = { 'key1': ['orange', 'yellow', 'blue'],
'key2': ['red', 'saffron', 'purple'],
'key3': ['white', 'grey', 'black']}
我得到的结果如下:
key3,
key1,
key2.
我只拿到了第一把钥匙,而我无法通过更进一步的途径拿到第二把钥匙
这是我试过的代码
def new_code(x):
for keys, values in dict_new.items():
for value in values:
if value in x:
return keys
df2['new_code'] = df1['column'].apply(new_code)
我期望的输出:
new_code:
key3 key2,
key1 key3,
key2 key3.
任何帮助都将不胜感激。试试以下方法:
Dict_new = { 'key1': ['orange', 'yellow', 'blue'],
'key2': ['red', 'saffron', 'purple'],
'key3': ['white', 'grey', 'black']}
需要注意的是,在执行任何操作之前,您必须将文本只除以空格
,否则您要么一起去掉标点符号(我在这里是通过替换
,因为您的示例中只有点),要么使用re.split()
将熊猫作为pd导入
_数据={'txt':[“白胡子和紫头发。”,“带黑色倾斜车窗的橙色汽车。”,“眼睛是红色和灰色头发。”]}
df=pd.DataFrame(数据=_数据)
Dict_new={'key1':['orange'、'yellow'、'blue']、'key2':['red'、'saffron',
“紫色”],“按键3”:[“白色”、“灰色”、“黑色”]]
df['new_code']=df['txt'].apply(lambda x:''.join([k代表Dict_new.keys()中的k,如果len(set(x.replace('.','').split()).intersection(set(Dict_new[k])>0]))
打印(df)
输出:
txt新代码
0白胡子和紫色头发。键2键3
1辆带黑色倾斜车窗的橙色汽车。键1键3
两只眼睛是红色和灰色的头发。键2键3
如果找到匹配项,则返回键,因此它只迭代循环,直到找到第一个匹配项。我对python比较陌生。除了返回,你还能提出其他建议吗?没有顺序:df['column'].str.replace('.','').str.split()。我将检查这是否对我的主要数据有效。非常感谢。您好@Grzegorz Skibinski您的建议正在处理示例数据。我将检查这是否对我的主要数据有效。非常感谢