【问题标题】:how to check for condition going row by row in a dataframe pandas如何在数据框熊猫中逐行检查条件
【发布时间】:2022-08-09 23:30:25
【问题描述】:

我有一个数据框,我必须检查每一行的值并分别修改列。

我有一张有 Col1 的桌子。如果 Col1 有 AAA,它必须是 {\"AAA\":today\'s date},如果是 BBB,则格式不同,如果是 CCC,则为今天日期的时间戳,以小时为 16。

ID  Col1  Col2  
1   AAA   1234
2   BBB   1456
3   CCC   4567

Col1 的最终格式是

ID  Col1                            Col2  
1   {\"AAA\":20220809}                1234
2   {\"BBB\":True}                    1456
3   {\"CCC\":\"20220809T160000.000000\"}4567

目前我有一个只为 AAA 修改的代码。我还必须确保我只检查 notnull 值。

if set([\'Col1\']).issubset(df_csv_generator.columns):
    mask_tif=df_csv_generator.Col1.notnull()
    result_tif = df_csv_generator.loc[mask_tif,\'Col1\'].str.split(\"=\").apply(lambda cond:{term: int(getdate) for term in cond})
    df_csv_generator.loc[mask_tif, \'Col1\'] = result_tif

如何使用 np.select() 检查多个值或逐行检查?

    标签: python pandas


    【解决方案1】:

    你可以试试Series.map

    d = {
        'AAA': {'AAA': 'format1'},
        'BBB': {'BBB': 'format2'},
        'CCC': {'CCC': 'format3'},
    }
    
    df['out'] = df['Col1'].map(d)
    
    print(df)
    
       ID Col1  Col2                 out
    0   1  AAA  1234  {'AAA': 'format1'}
    1   2  BBB  1456  {'BBB': 'format2'}
    2   3  CCC  4567  {'CCC': 'format3'}
    

    【讨论】:

      猜你喜欢
      • 2019-12-02
      • 2014-01-08
      • 1970-01-01
      • 2022-01-25
      • 2017-12-29
      • 2019-03-17
      • 2017-12-29
      • 2021-11-13
      • 1970-01-01
      相关资源
      最近更新 更多