Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 获取数据帧列中的字典的所有键_Python - Fatal编程技术网

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您的建议正在处理示例数据。我将检查这是否对我的主要数据有效。非常感谢