Pandas 如何根据另一个数据帧中的字符串类别计算字符串在列中出现的次数?
我有两个数据帧。 在Pandas 如何根据另一个数据帧中的字符串类别计算字符串在列中出现的次数?,pandas,dataframe,Pandas,Dataframe,我有两个数据帧。 在df1['sdk']中,此列具有与每个唯一应用程序id关联的sdk。df2具有两列,sdk\u类别,sdk\u名称 对于每个SDK类别,都列出了多个SDK名称 所需的输出是在df1中为每个sdk类别获取额外的列,并计算该类别中有多少sdk在该独特的应用程序中使用。我是python数据帧新手,非常感谢您的帮助。我试图在下面尽我所能说明我的问题: 数据1: 身份证件 名称 SDK 1. x a、 b 2. Y b、 d 3. Z a、 b,c 这是我能想到的最糟糕的解决方案: f
df1['sdk']
中,此列具有与每个唯一应用程序id关联的sdk
。df2
具有两列,sdk\u类别
,sdk\u名称
对于每个SDK类别,都列出了多个SDK名称
所需的输出是在df1中为每个sdk类别
获取额外的列,并计算该类别中有多少sdk在该独特的应用程序中使用。我是python数据帧新手,非常感谢您的帮助。我试图在下面尽我所能说明我的问题:
数据1:
身份证件
名称
SDK
1.
x
a、 b
2.
Y
b、 d
3.
Z
a、 b,c
这是我能想到的最糟糕的解决方案:
from collections import Counter
df3 = df1.assign(key=1).merge(df2.assign(key=1), how='outer', on='key').drop('key',axis=1)
df3['co'] = df3.apply(lambda x: sum((Counter(x['sdks_x'].replace(',',"")) & Counter(x['sdks_y'].replace(',',""))).values()), axis=1)#.s1m(axis=1)
df3 = df3.groupby(['id', 'name', 'sdks_x', 'sdsk_category']).mean().squeeze().unstack().reset_index()
df3:
不要张贴图片。将数据框复制粘贴为文本形式。用法:每当您有机密数据时,请尝试创建虚拟数据或稍微修改数据。你不需要发布全部数据。只有一些示例就足以编写逻辑.code。共享错误的回溯。向我显示此项的输出:
df1.assign(key=1)。merge(df2.assign(key=1),how='outer',on='key')。drop('key',axis=1)
谢谢,我无法共享我相信的每一列。我是否应该关闭此线程并单独发布一个新问题?您的解决方案帮助我合并了两个数据场,但是由于某些数据类型不兼容,计数器没有在sdk列上运行。我将尝试发布下一个尽可能接近原始数据的示例。谢谢你的帮助!您好,非常感谢您对正确发布问题提出的有用建议。我不确定(我仍然不确定)即使是针对我自己的问题,我也能在多大程度上公开共享数据。我已经尝试了你推荐的coed,但做了一些修改,我得到了以下错误:keyrerror:'sdks_x'。我应该分享我修改过的代码以获得更好的帮助吗?
sdsk_category id name sdks_x cat1 cat2 cat3
0 1 x a,b 2 1 1
1 2 y b,d 1 2 1
2 3 z a,b,c 3 1 1