Pandas 如何通过迭代其他两个Dataframes列来获得新的DF列?

Pandas 如何通过迭代其他两个Dataframes列来获得新的DF列?,pandas,loops,dataframe,Pandas,Loops,Dataframe,我有两个数据帧df1,df2。df1['A']包含一个单词列表。df2['b']包含两个单词。我需要一个单独的df3,在这里我需要说df1['a']中有多少个df['b']单词 我是python新手,我的解决方案是一个非常不雅观的“for循环”,在这个循环中,我迭代df1['a']的单词,迭代df2['b']的单词,并检查和设置计数。 我相信有更好更快的方法来实现这一点。谁能给我指一下正确的方向吗? ****更新**** 对不起,问题不清楚。以下是我努力实现的目标。 非常感谢您的帮助。为了您的

我有两个数据帧df1,df2。df1['A']包含一个单词列表。df2['b']包含两个单词。我需要一个单独的df3,在这里我需要说df1['a']中有多少个df['b']单词

我是python新手,我的解决方案是一个非常不雅观的“for循环”,在这个循环中,我迭代df1['a']的单词,迭代df2['b']的单词,并检查和设置计数。 我相信有更好更快的方法来实现这一点。谁能给我指一下正确的方向吗? ****更新**** 对不起,问题不清楚。以下是我努力实现的目标。


非常感谢您的帮助。

为了您的利益,您应该开始研究函数调用。尽管它们会随着处理的数据量而急剧膨胀,但在您的情况下,性能可能可以忽略不计

'''
Create a dataframe from the cartesian product of two other dataframes:

    df1 = pd.DataFrame({'a': [['red apples', 'ripe oranges'],
                              ['ripe mangoes', 'unripe pineapple']]})

    df2 = pd.DataFrame({'b': ['apples, mangoes', 'grapes, mangoes, pineapple']})
    p = [[x[0], y[0]] for x,y in product(df1.values.tolist(), df2.values.tolist())]

    df = pd.DataFrame(p)
'''

def get_counts(row):
    return sum(1 for item in row[1].split(', ') for thing in row[0] if item in thing)

df['count'] = df.apply(get_counts, axis=1)

print(df)
你也可以这样做:

df[1] = df[1].str.split(', ').apply(set)
df[0] = df[0].str.join(' ').str.split()
df['count'] = df.apply(lambda x: x[1].intersection(x[0]), axis=1).apply(len)
如果你只想数一数

#As series: 
df = df['count']

#As dataframe:
df = df[['count']]

请共享一些示例数据它们必须在同一行吗?如果一个单词在df2['b']中出现两次,会发生什么情况?您是数一次还是两次?你能提供代码样本吗?这些列的长度相同吗?谢谢。为了更清楚,我在df3列中加入了内容。我不希望第三个数据帧中有两列。只是伯爵。因此,为了发挥作用,我可能需要传递df1行和df2行。我是用for loop做的。有任何python方法可以做到这一点吗?谢谢,这取决于你想要什么样的输出。仅供参考,这实际上不需要用熊猫来完成,但从中学习是很好的。我编辑了我的答案。