python - 如果一个数据帧的行值位于另一个数据帧的列中,则创建一个新列并获取该索引

标签 python pandas dataframe

我可能使这个问题变得过于复杂,但是我似乎找不到一个简单的解决方案。

我有两个 DataFrame。我们将它们称为 df1 和 df2。为了让事情变得简单。假设 df1 有一个名为“某些数据”的列,df2 有两列称为“某些数据”和“其他数据”。

示例:

df1

一些数据 “勒布朗·詹姆斯 123” “勒布朗·詹姆斯 234”

df2

some data                        other data
"Lebron James 123 + other text"  "I want this in df1["New?"]"
"Michael Jordan"                 "Doesn't Matter"

所以基本上我想在 df1 中创建一个名为“New?”的新列。如果 df1["Some data"] 位于 df2["Some other data"] 中,这个新列(在 df1 中)将显示“New”。但是,如果 df2["some data"] 中没有实例,则我将 df1["New?"] 设置为 df2["other data"] 中该特定行的值。

运行后期望的结果:

df1

Some Data                         New?
"Lebron James 123"  "I want this in df1["New?"]"
"Lebron James 234"               "New"

正如您所看到的那样?列将包含其他数据列中该特定行的值。 Lebron James 234 不在 df2 的某些数据中,因此显示为新。

我可以使用 .isin() 方法让它说出 True 或 False,但是不知道如何获取另一个 df 的索引并从另一个 df 获取值数据栏。

谢谢

编辑:

据我所知会起作用

df["New?"] = df1["Some Data"].isin(df2["some data"])

会渲染

df1["新的?"]

True
False

所以我希望 True 成为“我希望这个在 df1["New?"]”中,而 False 成为 New

最佳答案

首先通过加入 df1 系列创建正则表达式:

rgx = '|'.join(df1['some data'])

现在使用np.where:

df1.assign(data=np.where(df2['some data'].str.match(rgx), df2['other data'], 'New'))

          some data                        data
0  Lebron James 123  I want this in df1["New?"]
1  Lebron James 234                         New

形状不匹配的示例:

df1 = pd.DataFrame({'a': ['a', 'b', 'c', 'd']})
df2 = pd.DataFrame({'a': ['aaaaa', 'bbbb', 'ffff', 'gggg', 'hhhh']})

rgx = '({})'.format('|'.join(df1.a))
m = df2.assign(flag=df2.a.str.extract(rgx))

df1.set_index('a').join(m.set_index('flag')).fillna('New').reset_index()

  index      a
0     a  aaaaa
1     b   bbbb
2     c    New
3     d    New

关于python - 如果一个数据帧的行值位于另一个数据帧的列中,则创建一个新列并获取该索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52227248/

相关文章:

python - 如何在 Pandas 的时间序列图上绘制垂直线?

python - 通过在两个 Pandas 数据帧之间迭代来识别相似的值。

python - sklearn 管道的正确用法

r - 如何在R中的data.frame中提取子序列的最后一个日期?

python - urllib2数据发送

Python 3 : How to remove items from an inventory in a text-based game?

python - 如何强制计算查询集以便在 View 中捕获异常

python - python中不同组的缩放数值

python - pandas 数据框中几行的平均值

python - reshape Pandas 数据框将一行反转为多列