简体   繁体   English

条件合并 Pandas Dataframe 和 Dataframe 添加列

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM