更多pandorean方式基于模式和应用函数来混合列

时间:2017-02-05 04:09:00

标签: python pandas

我想知道是否有更好的方法根据重复模式对列进行分组,然后应用函数。简单的版本是我有几个月的数据,但希望它在季度。为了达到目的,我需要每3个月一次并应用mean()

    RegionName  State   1997-01 1997-02 1997-03 1997-04 1997-05 1997-06
1   Los Angeles CA      83      19      40      47      76      48
2   Chicago IL          39      87      48      3       71      18
3   Philadelphia    PA  60      85      8       46      81      48

期望的结果是:

    RegionName  State   1997q1      1997q2
1   Los Angeles CA      47.33333333 57
2   Chicago     IL          58          30.66666667
3   Philadelphia    PA  51          58.33333333

我有一种非常讨厌的方法,使用python循环和一个预先制作的数字列表:

quartersbyendingdigit = {'1':'q1', '4':'q2', '7':'q3', '0':'q4'}
rl = list(range(2, housingdf.shape[1], 3))
for each in rl:
    og_column = housingdf.columns[each]
    new_column = og_column[:4] + quartersbyendingdigit[ og_column[-1] ]
    housingdf[new_column] = (housingdf[housingdf.columns[each]] + housingdf[housingdf.columns[each+1]] + housingdf[housingdf.columns[each+2]])/3

我必须想象熊猫有更好的方法,因为它是一个非常明显的模式。

1 个答案:

答案 0 :(得分:4)

您可以将日期时间列转换为季度时段,然后按axis = 1列分组数据;

df.set_index(["RegionName", "State"], inplace=True)    
df.columns = pd.to_datetime(df.columns).to_period("Q")    
df.groupby(level = 0, axis = 1).mean().reset_index()

enter image description here