我想知道以下方法在筛选和使用groupby for Pandas数据帧方面有什么区别。
以下是数据框:
df.head()
| category | active | value
-------------------------------
0 | A | 0 | 8
-------------------------------
1 | B | 0 | 4
-------------------------------
2 | B | 1 | 8
-------------------------------
3 | E | 1 | 8
-------------------------------
4 | A | 0 | 6
1。过滤
使用
有什么明显区别吗?df[df.active==1].head()
或
df[df['active']==1].head()
两者给出的结果相同:
| category | active | value
-------------------------------
2 | B | 1 | 8
-------------------------------
3 | E | 1 | 8
-------------------------------
7 | E | 1 | 6
-------------------------------
9 | B | 1 | 4
-------------------------------
10 | E | 1 | 2
2。分组
使用
df.groupby('category')[['value']].sum()
给予
category | value
-----------------
A | 130
-----------------
B | 148
-----------------
C | 63
-----------------
D | 57
-----------------
E | 107
但是同样的事情,但列名称周围没有双方括号
df.groupby('category')['value'].sum()
给予
category
A 130
B 148
C 63
D 57
E 107
Name: value, dtype: int64
答案 0 :(得分:0)
df["columnname"]
和df.columnname
等价于访问列,只应使用索引符号进行分配。出于OP中的目的,没有区别。
df[["columnname"]]
返回仅包含一列的数据帧,而df["columnname"]
返回一个序列。双括号表示法将列表作为索引传递,这意味着您可以一次获取多列并以这种方式获取子Dataframe。
答案 1 :(得分:0)
过滤
df[df.active==1] and df[df['active']==1] are same.
recommend to use df['column_name'] (sometimes column names can be function names)
分组
df.groupby('category')[['value']].sum()
if you are using 2D list then it returns a pandas dataframe, where category column will be a column.
df.groupby('category')['value'].sum()
Here, it returns a pandas series with category values as index