Python 使用pandas根据条件计算项目在单独数据框中出现的频率
我有两个数据帧,第一个是这样的,ID是唯一的值Python 使用pandas根据条件计算项目在单独数据框中出现的频率,python,pandas,dataframe,Python,Pandas,Dataframe,我有两个数据帧,第一个是这样的,ID是唯一的值 ID Etc Etc2 001 foo bar 002 foo2 bar2 003 foo3 bar3 第二个是这样的,其中ID不是唯一的值,df1中的所有ID也不能保证出现在这个df(df2)中 我试图做的是在第一个数据框中添加一列,例如,如果ID与第一个数据框的ID列中的ID匹配,则该列将提供一个带有“红色”的类别计数。基本上就像excel中的索引匹配 第二个表中的ID可以出现多次
ID Etc Etc2
001 foo bar
002 foo2 bar2
003 foo3 bar3
第二个是这样的,其中ID不是唯一的值,df1中的所有ID也不能保证出现在这个df(df2)中
我试图做的是在第一个数据框中添加一列,例如,如果ID与第一个数据框的ID列中的ID匹配,则该列将提供一个带有“红色”的类别计数。基本上就像excel中的索引匹配
第二个表中的ID可以出现多次,但在第一个表中只出现一次。第二个表中的类别值可以不同
我以为我用以下方法破解了它,但这并没有达到预期效果
new_df= pd.crosstab (df2['ID'],df2['CATEGORY'])
new_df = pd.crosstab(df1['SK_ID_CURR'],df2['NAME_CONTRACT_STATUS'])
但这给了我一个与初始数据帧长度不同的序列(并非第一个数据帧中的所有ID都显示在第二个数据帧中)
我也尝试了以下方法,但仍然没有达到预期效果
new_df= pd.crosstab (df2['ID'],df2['CATEGORY'])
new_df = pd.crosstab(df1['SK_ID_CURR'],df2['NAME_CONTRACT_STATUS'])
我相信,对于不匹配的值,需要获取NaN
s行:
new_df= pd.crosstab (df2['ID'],df2['Category'])
print (new_df)
Category Blue Red
ID
1 0 2
3 1 1
4 0 1
df = df1.join(new_df, on='ID')
print (df)
ID Etc Etc2 Blue Red
0 1 foo bar 0.0 2.0
1 2 foo2 bar2 NaN NaN
2 3 foo3 bar3 1.0 1.0