[英]Conditional Merge Pandas Dataframe with Dataframe to add column
Looking to conditionally merge a summary dataframe that was value_count -ed:希望有条件地合并摘要 dataframe 是 value_count -ed:
traitcount_df = traits_df['Trait_Count'].value_counts(normalize=True, dropna=False, ascending=True).to_frame()
to the main dataframe:转主 dataframe:
I used this code originally but would like to be able to do it with the summary dataframe, first column acting as the key and conditionally loading.我最初使用此代码,但希望能够使用摘要 dataframe 来完成,第一列作为键并有条件地加载。
rarity_conditions = [
(traits_df['Trait_Count'] == 4),
(traits_df['Trait_Count'] == 5),
(traits_df['Trait_Count'] == 6),
(traits_df['Trait_Count'] == 7)
]
rarity_values = [.0254, .2540, .5323, .1883]
traits_df['Trait_Count_Rarity'] = np.select(rarity_conditions, rarity_values)
Ive tried it with other dataframes unsuccessfully:我尝试使用其他数据框失败:
mouth_conditions = [
(traits_df['Mouth'] = mouth_df[])
mouth_values = mouth_df['Mouth']
traits_df['Mouth_Rarity'] = np.select(mouth_conditions, mouth_values)
You can a lot simplify your solution:您可以大大简化您的解决方案:
s = traits_df['Trait_Count'].value_counts(normalize=True, dropna=False, ascending=True)
traits_df = traits_df.join(s.rename('Trait_Count_Rarity'), on='Trait_Count')
instead:反而:
traitcount_df = traits_df['Trait_Count'].value_counts(normalize=True, dropna=False, ascending=True).to_frame()
rarity_conditions = [
(traits_df['Trait_Count'] == 4),
(traits_df['Trait_Count'] == 5),
(traits_df['Trait_Count'] == 6),
(traits_df['Trait_Count'] == 7)
]
rarity_values = [.0254, .2540, .5323, .1883]
traits_df['Trait_Count_Rarity'] = np.select(rarity_conditions, rarity_values)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.