我想你需要resample
:
cols = df.columns.difference(['Date'])
#if possible convert to float
df[cols] = df[cols].astype(float)
#if astype failed, because non numeric data, convert them to NaNs
df[cols] = df[cols].apply(pd.to_numeric, errors='coerce')
#if mixed dtypes
df[cols] = df[cols].astype(str).astype(float)
#alternatively
#df[cols] = df[cols].astype(str).apply(pd.to_numeric, errors='coerce')
df = df.resample('d', on='Date').mean().dropna(how='all')
print (df)
duration km
Date
2015-03-28 0.5 1.0
2015-03-30 1.5 4.0
2015-04-22 3.0 7.0
2015-04-23 0.0 0.0
或者:
df = df.set_index('Date').groupby(pd.Grouper(freq='d')).mean().dropna(how='all')
print (df)
duration km
Date
2015-03-28 0.5 1.0
2015-03-30 1.5 4.0
2015-04-22 3.0 7.0
2015-04-23 0.0 0.0
嗨,謝謝你的回答。 究竟是什麼最後一部分.dropna(how ='all')呢? – gabboshow
存在問題重新抽樣返回連續日期時間索引的所有缺失值。如果缺少某個日期,則值將被添加並由'NaN'填充。 ['dropna'](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.dropna.html)刪除所有包含所有'NaN'的行。 '約翰高爾特'答案它不需要,但沒有datetimeindex,只有索引填充蟒蛇日期(也許問題,也許不是) – jezrael
我編輯了我的問題,插入一些nans ...是否可以使用nanmean? – gabboshow