2017-10-15 118 views
3

這將是最簡單的解釋開始數據幀的樣本:熊貓據幀條件均值

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

是?如果您需要從答案中得到澄清,請索取。謝謝。 –

回答

2
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

沒什麼,沒關係。 –

1

重命名列與類型轉換,移動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 
3

使用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。 –