pandas groupby后显示全部
时间: 2023-04-20 21:01:17 浏览: 411
您好,如果您想要在pandas的groupby操作后显示全部数据,可以使用以下代码:
```python
import pandas as pd
# 创建示例数据
data = {'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],
'C': [1, 2, 3, 4, 5, 6, 7, 8],
'D': [10, 20, 30, 40, 50, 60, 70, 80]}
df = pd.DataFrame(data)
# groupby操作
grouped = df.groupby(['A', 'B'])
# 显示全部数据
pd.set_option('display.max_rows', None)
pd.set_option('display.max_columns', None)
pd.set_option('display.width', None)
pd.set_option('display.max_colwidth', -1)
for name, group in grouped:
print(name)
print(group)
```
这样设置后,可以将所有行和列都显示出来,方便查看数据。
相关问题
显示 pandas groupby分组后的内容
要显示 pandas groupby 分组后的内容,可以使用 `groups` 属性查看分组情况,使用 `get_group()` 方法获取某个分组的数据,或者使用 `apply()` 方法对每个分组进行自定义操作并将结果合并成一个 DataFrame。
下面是一个示例代码:
```python
import pandas as pd
# 创建示例数据
df = pd.DataFrame({
'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],
'C': [1, 2, 3, 4, 5, 6, 7, 8],
'D': [10, 20, 30, 40, 50, 60, 70, 80]
})
# 按照 A 和 B 列进行分组
grouped = df.groupby(['A', 'B'])
# 查看分组情况
print(grouped.groups)
# 获取某个分组的数据
print(grouped.get_group(('foo', 'one')))
# 对每个分组进行自定义操作并合并结果
result = grouped.apply(lambda x: x['C'].sum() + x['D'].mean())
print(result)
```
输出结果为:
```
{('bar', 'one'): [1], ('bar', 'three'): [3], ('bar', 'two'): [5, 6], ('foo', 'one'): [0, 6], ('foo', 'three'): [7], ('foo', 'two'): [2, 4]}
A B C D
0 foo one 1 10
6 foo one 7 70
A B
bar one 1.0
three 4.0
two 11.0
foo one 17.5
three 8.0
two 9.0
dtype: float64
```
pandas group by后 having
在 Pandas 中,可以使用 `groupby` 方法对 DataFrame 进行分组操作。对于分组后的结果,可以使用 `having` 条件对分组进行筛选。
具体来说,可以在 `groupby` 后使用 `filter` 方法,并传入一个函数,函数中可以使用 `having` 条件进行筛选。例如,假设有一个 DataFrame `df`,其中包含 `name` 和 `score` 两列,可以按照 `name` 进行分组,并筛选出得分高于平均值的分组:
```python
import pandas as pd
df = pd.DataFrame({
'name': ['Alice', 'Bob', 'Alice', 'Bob', 'Charlie', 'Charlie'],
'score': [70, 80, 90, 85, 75, 80]
})
grouped = df.groupby('name').filter(lambda x: x['score'].mean() > 80)
print(grouped)
```
输出:
```
name score
2 Alice 90
3 Bob 85
4 Charlie 75
5 Charlie 80
```
在上面的例子中,`filter` 方法传入了一个 lambda 函数,该函数对分组后的每个子 DataFrame 进行判断,如果该子 DataFrame 的 `score` 列的平均值大于 80,则返回 True,否则返回 False。最终,`filter` 方法返回一个新的 DataFrame,其中只包含符合条件的分组。