在pandas数据帧中,可以使用函数对其索引进行分组.我正在寻找一个代替应用于列的函数.
我想要分两列,除了我需要第二列按任意函数分组,foo:
group_sum = df.groupby(['name', foo])['tickets'].sum()
Run Code Online (Sandbox Code Playgroud)
如何foo定义如何将第二列分为两组,> 0例如,是否按值划分?或者,使用完全不同的方法或语法?
展望未来,interpolate效果很好:
name days
0 a NaN
1 a NaN
2 a 2
3 a 3
4 a NaN
5 a NaN
records.loc[:, 'days'].interpolate(method='linear', inplace=True)
name days
0 a NaN
1 a NaN
2 a 2
3 a 3
4 a 4
5 a 5
Run Code Online (Sandbox Code Playgroud)
...但是,它不处理起始行(仅向前)。该limit_directionPARAM允许{‘forward’, ‘backward’, ‘both’}。这些都不起作用。有没有正确的方法来向后插值?
我们可以假设一个序列递增或递减 1,它可能不会像在这个例子中那样从 0 开始。
我可以添加一个新列c,该列是最后两个值的和b,如下所示...
df['c'] = df.b.rolling(window = 2).sum().shift()
df
a b c
0 1 3 NaN
1 1 0 NaN
2 0 6 3.0
3 1 0 6.0
4 0 0 6.0
5 1 7 0.0
6 0 0 7.0
7 0 7 7.0
8 1 4 7.0
9 1 2 11.0
Run Code Online (Sandbox Code Playgroud)
...但是,如果我想先分组a怎么办?例如,我可以这样做:
df['c'] = df.groupby(['a'])['b'].shift(1) + df.groupby(['a'])['b'].shift(2)
是否有一种更优雅的方法来汇总一组中的大量班次(1、2,... n)?