Python:Pandas在将字典传递给重采样()后显示NaN
这是我拥有的一个非常大的数据帧的头部,我将Python:Pandas在将字典传递给重采样()后显示NaN,python,pandas,dictionary,nan,resampling,Python,Pandas,Dictionary,Nan,Resampling,这是我拥有的一个非常大的数据帧的头部,我将publish\u datetime设置为熊猫的索引: sentiment_subjectivity pos_sentiment_pol publish_datetime 2016-12-18 16:56:01 0.2500 0.2500 2016-12-21 16:56:05 0.0000 0.
publish\u datetime
设置为熊猫的索引:
sentiment_subjectivity pos_sentiment_pol
publish_datetime
2016-12-18 16:56:01 0.2500 0.2500
2016-12-21 16:56:05 0.0000 0.0000
2016-12-21 16:56:08 0.0000 0.0000
2016-12-21 16:56:08 0.1027 0.1027
2016-12-21 16:56:13 0.0000 0.0000
2016-12-21 16:56:17 0.0000 0.0000
2016-12-21 16:56:18 0.1027 0.1027
2016-12-21 16:56:19 0.1027 0.1027
2016-12-21 16:56:22 0.1027 0.1027
2016-12-21 16:56:23 0.1027 0.1027
现在我想重新取样。我通过传递字典来实现这一点,因为在原始数据帧中,我还有几个系列。然而,结果是一样的:
df = df.resample('1min').apply({'pos_sentiment_pol':'sum'}).fillna('None')
这就是我得到的:
pos_sentiment_pol
publish_datetime
2016-12-18 16:56:00 0.25
2016-12-18 16:57:00 None
2016-12-18 16:58:00 None
2016-12-18 16:59:00 None
2016-12-18 17:00:00 None
2016-12-18 17:01:00 None
2016-12-18 17:02:00 None
2016-12-18 17:03:00 None
2016-12-18 17:04:00 None
2016-12-18 17:05:00 None
这里怎么了?索引中的第一个元素来自3天前。它会自行分组,而之后的所有内容都会在3天或4320分钟后分组 要么是打字错误,要么你希望看到它按小时和分钟分组,而不管是哪一天。如果后者是真的,那么
df.groupby([df.index.hour, df.index.minute])[['pos_sentiment_pol']].sum()
pos_sentiment_pol
16 56 0.7635
如果您将第一个索引的值更改为与其余索引相同的日期,那么代码就可以正常工作
df.resample('1min').apply({'pos_sentiment_pol':'sum'}).fillna('None')
pos_sentiment_pol
publish_datetime
2016-12-21 16:56:00 0.7635
非常感谢。这是一个错误的数据内的数字,我不知道它是如何得到那里