python - 如何根据pandas中的条件映射两行不同的数据框

标签 python pandas dataframe data-analysis

我有两个数据框,

df1,

 Names
 one two three
 Sri is a good player
 Ravi is a mentor
 Kumar is a cricketer player

df2,

 values
 sri
 NaN
 sri, is
 kumar,cricketer player

我正在尝试获取 df1 中包含 df2 中所有项目的行

我的预期输出是,

 values                  Names
 sri                     Sri is a good player
 NaN
 sri, is                 Sri is a good player
 kumar,cricketer player  Kumar is a cricketer player

我尝试过,df1["Names"].str.contains("|".join(df2["values"].values.tolist())) 我也尝试过,

但我无法实现我的预期输出,因为它有(“,”)。请帮忙

最佳答案

将集合逻辑与 Numpy 广播结合使用。

d1 = df1['Names'].fillna('').str.lower().str.split('[^a-z]+').apply(set).values
d2 = df2['values'].fillna('').str.lower().str.split('[^a-z]+').apply(set).values

i, j = np.where(d1 >= d2[:, None])

df2.assign(Names=pd.Series(df1['Names'].values[j], df2['values'].index[i]))

                   values                        Names
0                     sri         Sri is a good player
1                     NaN                          NaN
2                 sri, is         Sri is a good player
3  kumar,cricketer player  Kumar is a cricketer player

关于python - 如何根据pandas中的条件映射两行不同的数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49022851/

相关文章:

pandas - 在操作符中使用 Pandas 系列

python - 带有 MultiIndex Pandas DataFrame 列表的嵌套字典

Python Pandas 匹配数据帧

python - 随机森林回归中的样本大小

python - 在 pandas python 中将列值转换为行值时出现问题?

python - 使用 Python statsmodel 进行多元线性回归

pandas - 有条件地用其他行值填充空行值

c++ - 如何同时处理一个 C++ 类的多个成员?

java - 使用 Jython 将参数从 Java 传递到 Python

python - 如何将列表设置为现有 Pandas 数据框的索引?