我正在创建新的数据框,该数据框应每n行仅包含一个中间值(而不是Median !!),但是我的代码不起作用!
我通过熊猫或简单的Python尝试了几种方法,但我总是失败。
value date index
14 40 1983-07-15 14
15 86 1983-07-16 15
16 12 1983-07-17 16
17 78 1983-07-18 17
18 69 1983-07-19 18
19 78 1983-07-20 19
20 45 1983-07-21 20
21 47 1983-07-22 21
22 48 1983-07-23 22
23 ..... ......... ..
RSDF5 = RSDF4.groupby(pd.Grouper(freq='15D', key='DATE')).[int(len(RSDF5)//2)].reset_index()
我知道代码是错误的,而且我完全没有想法!
SyntaxError: invalid syntax
答案 0 :(得分:1)
基于索引的解决方案。
df
是您的原始数据帧,N是您要分组的行数(假设为ad奇数,因此中间有唯一的行)。
df2 = df.groupby(np.arange(len(df))//N).apply(lambda x : x.iloc[len(x)//2])
请注意,如果总数或行数不能被N整除,则最后一组较短(尽管您仍然可以得到中间值)。
如果N是偶数,则使中心行更接近组的末尾:例如,如果N = 6,则得到每组6行的第4行。