【问题标题】:Insert data to new column based on conditions given in dictionary根据字典中给定的条件将数据插入新列
【发布时间】:2021-10-22 15:12:04
【问题描述】:

如果满足条件,我有字典指定行应采用的值

dict_map = {
    "Yes" : {'Sex':'F', 'Pregnant': 'Y'},
    "No" : {'Sex':'F', 'Pregnant': 'N'},
    "N/A" : {'Sex': 'M'},
    }

数据框和列表

df = pd.DataFrame(
{
    'ID': ['AB01', 'AB02', 'AB03', 'AB04', 'AB05','AB06'],
    'Sex': ["F","M","M",np.nan,"F","F"],
    'Pregnant': ['Y', 'N',np.nan, 'Y', '', 'N']
    
 }
 )

 cols_of_interest = ["Sex","Pregnant"]

最终的数据框应如下所示,其中 Status 是新列。不使用合并功能如何做到这一点?

【问题讨论】:

    标签: python pandas dataframe numpy


    【解决方案1】:

    您可以创建数据框然后merge

    out = df.merge(pd.DataFrame(dict_map).T.reset_index(),how='left')
    Out[139]: 
         ID  Sex Pregnant index
    0  AB01    F        Y   Yes
    1  AB02    M        N   NaN
    2  AB03    M      NaN   N/A
    3  AB04  NaN        Y   NaN
    4  AB05    F            NaN
    5  AB06    F        N    No
    

    【讨论】:

    • 对于第 1 行,它应该是“N/A”,因为 Sex 是 M,还有没有其他可以在不使用合并的情况下完成的操作
    • 字典可以根据需要进行重组
    • 有什么方法可以在不使用合并功能@BENY 的情况下做到这一点?
    • @Fazli 你可能想试试地图或加入
    • 我尝试使用 map 但字典的结构方式无法正常工作。如果你有时间,你能告诉我它是怎么做的吗?
    猜你喜欢
    • 2023-02-06
    • 2018-11-30
    • 2023-04-06
    • 2018-07-01
    • 1970-01-01
    • 2023-01-26
    • 1970-01-01
    • 2021-01-23
    • 2019-09-30
    相关资源
    最近更新 更多