通过列的值有效地对 Pandas DataFrame 的行进行分组?
Efficiently grouping the rows of a Pandas DataFrame by the value of a column?
我有一个 Pandas DataFrame df
,有两列 A
和 B
。 A
也是索引。
B
的允许值范围非常小(在我的例子中,B
是一个布尔值)。如何快速回答查询:"all rows in df
for which the value of B
is x
?"
例如,"which rows of df
have a B
value that is True
?"
对于我的特定用例,因为只有两列,所以只需对 A
列中的值进行分组就足够了,即 "which values of A
have a corresponding B
value that is x
?".
这是一个使用 http://www.gregreda.com/2013/10/26/intro-to-pandas-data-structures/ 的示例,我还建议您阅读该教程以及 pandas 文档。
>>> data = {'year': [2010, 2011, 2012, 2011, 2012, 2010, 2011, 2012],
... 'team': ['Bears', 'Bears', 'Bears', 'Packers', 'Packers', 'Lions', 'Lions', 'Lions'],
... 'wins': [11, 8, 10, 15, 11, 6, 10, 4],
... 'losses': [5, 8, 6, 1, 5, 10, 6, 12]}
>>> football = pd.DataFrame(data, columns=['year', 'team', 'wins', 'losses'])
>>> football
year team wins losses
0 2010 Bears 11 5
1 2011 Bears 8 8
2 2012 Bears 10 6
3 2011 Packers 15 1
4 2012 Packers 11 5
5 2010 Lions 6 10
6 2011 Lions 10 6
7 2012 Lions 4 12
这就是你想要做的:
>>> football[football['team'] == 'Lions']
year team wins losses
5 2010 Lions 6 10
6 2011 Lions 10 6
7 2012 Lions 4 12
[3 rows x 4 columns]
在您的情况下,您需要替换这些列 headers 并执行您想从数据框中获取的内容。
df[df['B'] = True]
我给出了上面的示例,以便您更加熟悉操作并尝试获得一个好主意。
我有一个 Pandas DataFrame df
,有两列 A
和 B
。 A
也是索引。
B
的允许值范围非常小(在我的例子中,B
是一个布尔值)。如何快速回答查询:"all rows in df
for which the value of B
is x
?"
例如,"which rows of df
have a B
value that is True
?"
对于我的特定用例,因为只有两列,所以只需对 A
列中的值进行分组就足够了,即 "which values of A
have a corresponding B
value that is x
?".
这是一个使用 http://www.gregreda.com/2013/10/26/intro-to-pandas-data-structures/ 的示例,我还建议您阅读该教程以及 pandas 文档。
>>> data = {'year': [2010, 2011, 2012, 2011, 2012, 2010, 2011, 2012],
... 'team': ['Bears', 'Bears', 'Bears', 'Packers', 'Packers', 'Lions', 'Lions', 'Lions'],
... 'wins': [11, 8, 10, 15, 11, 6, 10, 4],
... 'losses': [5, 8, 6, 1, 5, 10, 6, 12]}
>>> football = pd.DataFrame(data, columns=['year', 'team', 'wins', 'losses'])
>>> football
year team wins losses
0 2010 Bears 11 5
1 2011 Bears 8 8
2 2012 Bears 10 6
3 2011 Packers 15 1
4 2012 Packers 11 5
5 2010 Lions 6 10
6 2011 Lions 10 6
7 2012 Lions 4 12
这就是你想要做的:
>>> football[football['team'] == 'Lions']
year team wins losses
5 2010 Lions 6 10
6 2011 Lions 10 6
7 2012 Lions 4 12
[3 rows x 4 columns]
在您的情况下,您需要替换这些列 headers 并执行您想从数据框中获取的内容。
df[df['B'] = True]
我给出了上面的示例,以便您更加熟悉操作并尝试获得一个好主意。