Pandas groupby()和agg()忽略错误

时间:2017-10-25 16:17:13

标签: python pandas pandas-groupby

更新完整性:

import pandas as pd

dates = pd.to_datetime(['2017-10-01','2017-10-02','2017-10-03']).tolist()

df = pd.DataFrame({ 
            'day_of_week':['m','t','w'],
            'alpha':[1,2,3],
            'bravo'[4,5,6],
            'charlie':[7,8,9],
            'dates':dates
            })

agg_dik = {'alpha': sum,
           'bravo': sum,
           'charlie': max,
           'dates': sum}

df = df.groupby('day_of_week').agg(agg_dik).reset_index(drop = True)

这会在日期时间总和上引发错误。所以我可以避免这种情况,如果数据框真的有五列,但我有数百个列的数据帧,并且经常构建聚合词典理解,如:

agg_dik = { c : max if 'e' in c else sum for c in cols }

然而,当groupby().agg()命中一个不允许总和的系列时,它就会出错。

所以我的问题 - 是否有办法实现我正在寻找的结果,但是有大熊猫放弃错误列或用NaN替换并继续?

我已经查看了其他几个问题(例如this one),但它们并没有完全回答我的问题。

1 个答案:

答案 0 :(得分:1)

手头有两个问题:

  1. 您的函数字典可能包含不在您正在使用的数据框中的列。在这种情况下,您只需要抓取其键与数据框中存在的列匹配的元素。

  2. 您的一些函数会抛出需要捕获的错误/异常。否则,您的代码的列表行将无效。

  3. 以下是应该处理这两种情况的解决方案:

    import datetime
    
    
    time_str = "7/19/2017 0:00"
    dt_aware = datetime.strptime(time_str, '%Y-%m-%dT%H:%M:%S%z')
    print(dt_aware.isoformat('T'))
    

    我希望这会有所帮助。