Pandas 如何使用关系代数(Reframe)按日期过滤并计算这些日期?
我真的卡住了。我阅读了基于熊猫的Reframe文档,我自己尝试了多种方法,但仍然不起作用。所以我得到了一个名为weddings的CSV文件,看起来像这样:Pandas 如何使用关系代数(Reframe)按日期过滤并计算这些日期?,pandas,relational-database,pandas-groupby,relational-algebra,Pandas,Relational Database,Pandas Groupby,Relational Algebra,我真的卡住了。我阅读了基于熊猫的Reframe文档,我自己尝试了多种方法,但仍然不起作用。所以我得到了一个名为weddings的CSV文件,看起来像这样: Weddings, Date Wedding1,20181107 Wedding2,20181107 还有更多的行。如您所见,日期列中有重复项,但我认为这无关紧要。我想计算按日期过滤的婚礼数量,例如,2016年10月5日之后的婚礼数量(20161005)。所以首先我尝试了这个: Weddings = Relation('weddings.c
Weddings, Date
Wedding1,20181107
Wedding2,20181107
还有更多的行。如您所见,日期列中有重复项,但我认为这无关紧要。我想计算按日期过滤的婚礼数量,例如,2016年10月5日之后的婚礼数量(20161005)。所以首先我尝试了这个:
Weddings = Relation('weddings.csv')
Weddings.sort(['Date']).query('Date > 20161005').project(['Weddings', 'Date'])
这对我来说似乎是合乎逻辑的,但我得到了一个“日期”键错误,不知道为什么?所以我尝试了更简单的方法
Weddings = Relation('weddings.csv')
Weddings.groupby(['Date']).count()
这也不起作用,我仍然得到一个键错误“日期”,不知道为什么。有人能帮我吗
跟踪
KeyError Traceback (most recent call last)
<ipython-input-44-b358cdf55fdb> in <module>()
1
2 Weddings = Relation('weddings.csv')
----> 3 weddings.sort(['Date']).query('Date > 20161005').project(['Weddings', 'Date'])
4
5
~\Documents\Reframe.py in sort(self, *args,
**kwargs)
110 """
111
--> 112 return Relation(super().sort_values(*args, **kwargs))
113
114 def intersect(self, other):
~\Anaconda3\lib\site-packages\pandas\core\frame.py in sort_values(self, by,
axis, ascending, inplace, kind, na_position)
4416 by = by[0]
4417 k = self._get_label_or_level_values(by, axis=axis,
-> 4418 stacklevel=stacklevel)
4419
4420 if isinstance(ascending, (tuple, list)):
~\Anaconda3\lib\site-packages\pandas\core\generic.py in
_get_label_or_level_values(self, key, axis, stacklevel)
1377 values = self.axes[axis].get_level_values(key)._values
1378 else:
-> 1379 raise KeyError(key)
1380
1381 # Check for duplicates
KeyError: 'Date'
keyrerror回溯(最近一次调用)
在()
1.
2婚礼=关系('Weddings.csv')
---->3婚礼。排序(['Date'])。查询('Date>20161005')。项目(['weddings','Date']))
4.
5.
~\Documents\Reframe.py排序(self,*args,
**kwargs)
110 """
111
-->112返回关系(super().sort_值(*args,**kwargs))
113
114 def intersect(自身、其他):
排序值中的~\Anaconda3\lib\site packages\pandas\core\frame.py(self、by、,
轴、上升轴、在位轴、种类轴、未定位轴)
4416 by=by[0]
4417 k=自身。获取标签值或级别值(通过,轴=轴,
->4418堆栈级别=堆栈级别)
4419
4420如果isinstance(升序,(元组,列表)):
中的~\Anaconda3\lib\site packages\pandas\core\generic.py
_获取\u标签\u或\u级别\u值(self、key、axis、stacklevel)
1377 values=self.axes[axis]。获取\u级别\u值(键)。\u值
1378其他:
->1379升起钥匙错误(钥匙)
1380
1381#检查有无重复
KeyError:“日期”
能否打印df.列
屏幕上可能有空白columns@Datanovice我知道了,是这样吗?索引(['Weddings','Date'],dtype='object')看起来不像任何空白,你应该发布完整的堆栈trace1377 values=self.axes[axis]。获取级别值(键)._值1378其他:->1379 raise KeyError(键)1380 1381#检查重复项KeyError:'Date'@DATANYOUR我会将整个跟踪添加到我的帖子中