pandas groupby后获取索引
时间: 2023-09-03 18:08:14 浏览: 150
在Pandas中,可以使用`groupby`方法按照指定的列或函数分组,并对每个分组进行操作。如果想要获取分组后的索引,可以使用`groupby`方法后跟`indices`属性。该属性返回一个字典,其中键是每个分组的名称,值是一个包含该分组索引的数组。以下是一个示例:
```python
import pandas as pd
# 创建一个DataFrame
df = pd.DataFrame({
'key': ['A', 'B', 'C', 'A', 'B', 'C'],
'value': [1, 2, 3, 4, 5, 6]
})
# 按照key列分组并获取索引
grouped = df.groupby('key')
indices = grouped.indices
print(indices)
```
输出结果为:
```
{'A': array([0, 3]), 'B': array([1, 4]), 'C': array([2, 5])}
```
可以看到,返回的字典中,键为'A'、'B'、'C',对应分组的名称,值为包含该分组索引的数组。
相关问题
pandas groupby后求众数
对于pandas的groupby操作后,可以使用`agg`方法来求众数。下面是一个示例代码:
```python
import pandas as pd
# 创建示例数据
data = {'A': ['a', 'b', 'a', 'b', 'a'],
'B': [1, 2, 2, 3, 3]}
df = pd.DataFrame(data)
# 使用groupby求众数
mode_df = df.groupby('A')['B'].agg(lambda x: x.mode()[0])
print(mode_df)
```
在这个示例中,我们首先创建了一个包含两列的DataFrame。然后使用`groupby`方法按照列'A'进行分组,然后通过`agg`方法应用一个自定义的聚合函数。在这个例子中,聚合函数是`lambda x: x.mode()[0]`,它返回每个分组的众数。最后,将结果打印出来。
输出结果将会是:
```
A
a 2
b 3
Name: B, dtype: int64
```
其中,'A'列的唯一值被用作索引,而'B'列的众数作为对应的值。
pandas groupby后转为二维
在pandas库中,当你使用`groupby()`函数对数据框按照某一列或多列进行分组后,通常会得到一个`GroupBy`对象。这个对象包含了每个组的聚合结果,但它本身并不是二维的数据结构,而是可以进一步操作的 Series、DataFrame 或者更复杂的结果。
如果你想将`groupby()`后的结果转换为二维表格,也就是汇总后的 DataFrame 格式,你可以通过调用 `.apply()` 函数并指定聚合函数(如`sum()`, `mean()`, `count()`等),或者直接使用`.agg()`方法来进行汇总,并设置合适的列名。例如:
```python
# 假设df是一个包含需要分组和计算的DataFrame
grouped = df.groupby('column_to_group').agg({'another_column': 'sum', 'yet_another_column': 'mean'})
# 如果你想使用自定义函数,例如求最大值
grouped = df.groupby('column_to_group').apply(lambda x: x[['column']].max())
# 输出的就是一个二维的DataFrame,每一行对应一个分组,每列是对应聚合后的结果
```
如果你想要获取的是每个组的原始数据,而不是统计结果,那么可以直接访问`groupby()`返回的对象的`groups`属性,它是一个字典,键是组标签,值是对应的索引数组。
阅读全文