Python 基于其他数据帧中的值移动列值
我有两个数据帧,例如: df1: df2: 每当我从df1的关键字列表中找到df2中的任何值时,我都希望将找到的值移动到新的列表或数据帧中;这意味着这些值取自df2并移动到df3。结果如下: df2: df3: 或项目列表,如[李子、紫色、梨、苹果] 一个类似但不确切的问题是: 编辑:诸如“pears”或“pearl”之类的项目仍然应该为关键字“pear”标识。您可以使用str.contains()并使用Python 基于其他数据帧中的值移动列值,python,pandas,dataframe,filtering,Python,Pandas,Dataframe,Filtering,我有两个数据帧,例如: df1: df2: 每当我从df1的关键字列表中找到df2中的任何值时,我都希望将找到的值移动到新的列表或数据帧中;这意味着这些值取自df2并移动到df3。结果如下: df2: df3: 或项目列表,如[李子、紫色、梨、苹果] 一个类似但不确切的问题是: 编辑:诸如“pears”或“pearl”之类的项目仍然应该为关键字“pear”标识。您可以使用str.contains()并使用|检查正则表达式。另外,我使用explode()将关键字转换为列表 import panda
|
检查正则表达式。另外,我使用explode()将关键字转换为列表
import pandas as pd
c = ['Category','Keywords']
d = [['Fruit',['apple', 'pear', 'plum', 'grape']],
['Color',['red', 'purple', 'green']]]
df1 = pd.DataFrame(d,columns=c)
df2 = pd.DataFrame({'Items':['plum','purple','pear','orange',
'apple','rainbow','pearl','pears',
'peary','pineapple','plumber']})
print (df1)
print (df2)
keywords = df1.Keywords.explode().explode().to_list()
key_dict = r'({})'.format('|'.join(keywords))
mask = df2.Items.str.contains(key_dict)
df3 = df2[mask]
df2 = df2[~mask]
print (df2)
print (df3)
这将为您提供:
原始df1:
Category Keywords
0 Fruit [apple, pear, plum, grape]
1 Color [red, purple, green]
原始df2:
Items
0 plum
1 purple
2 pear
3 orange
4 apple
5 rainbow
6 pearl
7 pears
8 peary
9 pineapple
10 plumber
New df3:包含作为关键字一部分的所有项
Items
0 plum
1 purple
2 pear
4 apple
6 pearl
7 pears
8 peary
9 pineapple
10 plumber
更新的df2:
Items
3 orange
5 rainbow
感谢@nithish08的回复,我正在尝试做一个子字符串搜索,其中可能有诸如pears或pearl之类的单词,它仍然应该能够找到它。
import pandas as pd
c = ['Category','Keywords']
d = [['Fruit',['apple', 'pear', 'plum', 'grape']],
['Color',['red', 'purple', 'green']]]
df1 = pd.DataFrame(d,columns=c)
df2 = pd.DataFrame({'Items':['plum','purple','pear','orange',
'apple','rainbow','pearl','pears',
'peary','pineapple','plumber']})
print (df1)
print (df2)
keywords = df1.Keywords.explode().explode().to_list()
key_dict = r'({})'.format('|'.join(keywords))
mask = df2.Items.str.contains(key_dict)
df3 = df2[mask]
df2 = df2[~mask]
print (df2)
print (df3)
Category Keywords
0 Fruit [apple, pear, plum, grape]
1 Color [red, purple, green]
Items
0 plum
1 purple
2 pear
3 orange
4 apple
5 rainbow
6 pearl
7 pears
8 peary
9 pineapple
10 plumber
Items
0 plum
1 purple
2 pear
4 apple
6 pearl
7 pears
8 peary
9 pineapple
10 plumber
Items
3 orange
5 rainbow