lat*_*s64 7 python filter series pandas
我试图在pandas数据帧上使用过滤器来过滤掉与重复值匹配的所有行(当存在重复时需要删除所有行,而不仅仅是第一个或最后一个).
这就是我在编辑器中的作用:
df = df.groupby("student_id").filter(lambda x: x.count() == 1)
Run Code Online (Sandbox Code Playgroud)
但是,当我使用此代码运行我的脚本时,我收到错误:
TypeError:filter函数返回一个Series,但是期望一个标量bool
我在尝试应用过滤器之前,通过连接另外两个帧来创建数据帧.
它应该是:
In [32]: grouped = df.groupby("student_id")
In [33]: grouped.filter(lambda x: x["student_id"].count()==1)
Run Code Online (Sandbox Code Playgroud)
更新:
我不确定您提到的有关交互式控制台的问题。从技术上讲,在这种特定情况下(可能存在其他情况,例如diff env可能具有复杂的“导入”功能),控制台(例如ipython)应与其他环境(orig python env或某些环境)具有相同的行为IDE嵌入式一个)
理解pandas groupby的一种直观方法是将DataFrame.groupby()的返回obj视为数据框列表。因此,当您尝试使用过滤器在x上应用lambda函数时,x实际上是这些数据帧之一:
In[25]: df = pd.DataFrame(data,columns=year)
In[26]: df
Out[26]:
2013 2014
0 0 1
1 2 3
2 4 5
3 6 7
4 0 1
5 2 3
6 4 5
7 6 7
In[27]: grouped = df.groupby(2013)
In[28]: grouped.count()
Out[28]:
2014
2013
0 2
2 2
4 2
6 2
Run Code Online (Sandbox Code Playgroud)
在此示例中,分组的obj中的第一个数据帧将是:
In[33]: df1 = df.ix[[0,4]]
In[34]: df1
Out[33]:
2013 2014
0 0 1
4 0 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5175 次 |
| 最近记录: |