更新完整性:
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),但它们并没有完全回答我的问题。
答案 0 :(得分:1)
手头有两个问题:
您的函数字典可能包含不在您正在使用的数据框中的列。在这种情况下,您只需要抓取其键与数据框中存在的列匹配的元素。
您的一些函数会抛出需要捕获的错误/异常。否则,您的代码的列表行将无效。
以下是应该处理这两种情况的解决方案:
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'))
我希望这会有所帮助。