Python中文
首页
教程
问答
标签
搜索
登录
注册
Pandas中的布尔值重采样
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我遇到了一个在<code>pandas</code>中对布尔值进行重采样的特殊属性。以下是一些时间序列数据:</p> <pre><code>import pandas as pd import numpy as np dr = pd.date_range('01-01-2020 5:00', periods=10, freq='H') df = pd.DataFrame({'Bools':[True,True,False,False,False,True,True,np.nan,np.nan,False], "Nums":range(10)}, index=dr) </code></pre> <p>因此,数据如下所示:</p> <pre><code> Bools Nums 2020-01-01 05:00:00 True 0 2020-01-01 06:00:00 True 1 2020-01-01 07:00:00 False 2 2020-01-01 08:00:00 False 3 2020-01-01 09:00:00 False 4 2020-01-01 10:00:00 True 5 2020-01-01 11:00:00 True 6 2020-01-01 12:00:00 NaN 7 2020-01-01 13:00:00 NaN 8 2020-01-01 14:00:00 False 9 </code></pre> <p>我本以为在重新采样时可以对布尔列执行简单操作(如求和),但(按现状)这失败了:</p> <pre><code>>>> df.resample('5H').sum() Nums 2020-01-01 05:00:00 10 2020-01-01 10:00:00 35 </code></pre> <p>“Bools”列被删除。我对发生这种情况的印象是b/c列的<code>dtype</code>是<code>object</code>。改变这种做法可以解决这个问题:</p> <pre><code>>>> r = df.resample('5H') >>> copy = df.copy() #just doing this to preserve df for the example >>> copy['Bools'] = copy['Bools'].astype(float) >>> copy.resample('5H').sum() Bools Nums 2020-01-01 05:00:00 2.0 10 2020-01-01 10:00:00 2.0 35 </code></pre> <p>但是(奇怪的是,<em>仍然可以</em>通过索引重采样对象而不更改<code>dtype</code>来对布尔值求和:</p> <pre><code>>>> r = df.resample('5H') >>> r['Bools'].sum() 2020-01-01 05:00:00 2 2020-01-01 10:00:00 2 Freq: 5H, Name: Bools, dtype: int64 </code></pre> <p>而且,如果唯一的列是布尔值,您仍然可以重新采样(尽管该列仍然是<code>object</code>):</p> <pre><code>>>> df.drop(['Nums'],axis=1).resample('5H').sum() Bools 2020-01-01 05:00:00 2 2020-01-01 10:00:00 2 </code></pre> <p>是什么让后两个例子起作用?我可以看出它们可能更明确一些(<em>“请,我真的想对这个列重新采样!”</em>),但我不明白为什么原始的<code>resample</code>不允许这个操作(如果可以的话)</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p><code>df.resample('5H').sum()</code>对<code>Bools</code>列不起作用,因为该列具有混合数据类型,在pandas中为<code>object</code>。在<code>resample</code>或<code>groupby</code>上调用<code>sum()</code>时,将忽略<code>object</code>类型的列</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
将Pandas数据帧转换为PyTorch张量?
3 回答
将Pandas数据帧转换为scipy稀疏矩阵
5 回答
将Pandas数据帧转换为Spark Datafram时出现问题
2 回答
将pandas数据帧转换为spark DataFram时出错
9 回答
将Pandas数据帧转换为spark datafram时收到错误
7 回答
将Pandas数据帧转换为Spark数据帧
10 回答
将Pandas数据帧转换为Tensorflow数据
9 回答
将Pandas数据帧转换为tkinter obj
7 回答
将pandas数据帧转换为XML
7 回答
将Pandas数据帧转换为值sql语句
1 回答
将pandas数据帧转换为元组
1 回答
将pandas数据帧转换为元组列表
1 回答
将pandas数据帧转换为元组列表并删除所有pandas数据类型
10 回答
将pandas数据帧转换为具有头和数据类型的numpy数组
7 回答
将pandas数据帧转换为内存中的拼花地板,并将其加载到Python中的Hadoop中
8 回答
将pandas数据帧转换为内存中类似文件的对象?
7 回答
将Pandas数据帧转换为内存功能(&F)
8 回答
将pandas数据帧转换为列表列表
5 回答
将pandas数据帧转换为列表列表以输入到RNN
6 回答
将Pandas数据帧转换为单行DataFram
2 回答