如何解决聚合前删除空行
我有一个数据帧列表(带有日期时间索引),每个数据帧中两行之间的最短时间(日期)为 15 分钟。我想使用平均值、中值、几何平均值和其他方法将所有数据帧分组为一个(按天)。问题是有些日子在所有数据帧中都不包含数据。有些方法,比如mean,会忽略它,但使用其他方法会导致错误。我的问题是如何在应用该方法之前删除这些天数?
数据:
[ col1 col2 col3 col4
date
2020-02-03 08:00:00+00:00 3.616141 3.362717 1.627347 2.242732
2020-02-03 08:15:00+00:00 4.043727 3.749407 1.790467 2.272293
2020-02-03 08:30:00+00:00 3.872196 3.595969 1.729359 2.221447
... ... ... ... ...
2020-12-25 08:45:00+00:00 6.645853 1.352785 0.081961 4.112518
2020-12-25 09:30:00+00:00 6.066697 1.068805 0.058980 3.991505
[2204 rows x 6 columns],...]
均值聚合后的数据:
col1 col2 col3 col4
date
2020-02-02 00:00:00+00:00 4.636509 0.842644 0.069093 1.393849
2020-02-03 00:00:00+00:00 6.649390 1.077993 0.081713 1.798794
2020-02-04 00:00:00+00:00 5.765083 1.113354 0.097113 1.668112
2020-02-05 00:00:00+00:00 NaN NaN NaN NaN
2020-02-06 00:00:00+00:00 NaN NaN NaN NaN
... ... ... ... ...
如您所见,02/05 和 02/06 天都没有数据。
我的代码与返回错误的 gstd 聚合:
from scipy.stats import gstd
cols = ["col1","col2","col3","col4"]
joined = pd.concat(df.reset_index() for df in datalist)
joined = joined.replace({np.nan:1,0:1})
joined[cols] = joined[cols].mask(joined[cols] < 0,1)
df = joined.set_index('date').groupby(pd.Grouper(freq='D'))
std = df.apply(gstd)
#std = df.agg(gstd)
错误:
ValueError: Degrees of freedom <= 0 for slice
解决方法
你试过了吗
df.dropna()
?
这将删除包含至少一个空值的行。
,试试:
data.isnull()
它将返回一个带有布尔值的 DataFrame,提示空状态。
此外,您可以使用:
data.dropna()
删除包含行/列的空值
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。