熊猫据帧条件均值

问题描述:

这将是最简单的解释开始数据帧的样本:熊猫据帧条件均值

TimeStamp 382.098  382.461  383.185  383.548 
    10:28:00 0.012448 0..0124485 0.
    10:30:00 0.0124135 0..0124135 0.012431 
    10:32:00 0.0551035 0.0551725 0.055931 0.0563105 
    10:34:00 0.055586 0.0557245 0.056655 0.0569485 
    10:36:00 0.055586 0.055776 0.0568105 0.057362 

我希望我的输出是:

TimeStamp 382   383 
    10:28:00 0.012405 0.01240525 
    10:30:00 0.012405 0.01242225 
    10:32:00 0.05513  0.05612075 
    10:34:00 0.05565525 0.05680175 
    10:36:00 0.055681 0.05708625 

所以,我希望查看列名值,并且如果它们与整数相同,我希望输出列具有每次索引值的值的均值。

我的想法是使用df.round列标题四舍五入到最接近的整数,然后使用.mean()以某种方式施加的平均上轴= 0相同的山口头。但是,我在数据帧索引类型上使用循环函数时出现错误。

+0

是?如果您需要从答案中得到澄清,请索取。谢谢。 –

df.rename(columns=dict(zip(df.columns[1:], df.columns[1:]\ 
     .values.astype(float).round().astype(str))),inplace=True) 

df.set_index('TimeStamp').groupby(df.columns[1:], 
          axis=1).mean().reset_index() 
+0

感叹,这个用户是一样的。首先接受我的答案,然后不接受。 –

+0

@cᴏʟᴅsᴘᴇᴇᴅ刚刚发生了什么? ......知道了...... – Wen

+0

没什么,没关系。 –

重命名列与类型转换,移动TimeStamp索引,然后使用groupby获得列装置:

df.rename(columns=lambda x: int(float(x)) if x!="TimeStamp" else x, inplace=True) 
df.set_index("TimeStamp", inplace=True) 

df 
       382  382  383  383 
TimeStamp           
10:28:00 0.012448 0..012448 0.
10:30:00 0.012414 0..012414 0.012431 
10:32:00 0.055103 0.055172 0.055931 0.056310 
10:34:00 0.055586 0.055725 0.056655 0.056948 
10:36:00 0.055586 0.055776 0.056810 0.057362 


df.groupby(df.columns, axis=1).mean() 

       382  383 
TimeStamp      
10:28:00 0.012405 0.012405 
10:30:00 0.012405 0.012422 
10:32:00 0.055138 0.056121 
10:34:00 0.055655 0.056802 
10:36:00 0.055681 0.057086 

使用groupby连同lambda所述第一轴线。

df.set_index('TimeStamp', inplace=True) 
df.groupby(by=lambda x: int(x.split('.')[0]), axis=1).mean() 

       382  383 
TimeStamp 
10:28:00 0.012405 0.012405 
10:30:00 0.012405 0.012422 
10:32:00 0.055138 0.056121 
10:34:00 0.055655 0.056802 
10:36:00 0.055681 0.057086 
+0

想念你这么多〜:-) – Wen

+0

@Wen也想你,哥们OL。 –