在Python中为第n行选择中间值

时间:2019-06-27 09:13:05

标签: python pandas

我正在创建新的数据框,该数据框应每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

1 个答案:

答案 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行。