Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 分组后的索引行为:我是否看到一个";额外一行“;?_Python_Pandas_Dataframe_Pandas Groupby - Fatal编程技术网

Python 分组后的索引行为:我是否看到一个";额外一行“;?

Python 分组后的索引行为:我是否看到一个";额外一行“;?,python,pandas,dataframe,pandas-groupby,Python,Pandas,Dataframe,Pandas Groupby,这可能是一个非常简单的问题,但我试图了解熊猫的分组和索引是如何工作的 假设我有一个包含以下数据的数据帧: df = pd.DataFrame(data={ 'p_id': [1, 1, 1, 2, 3, 3, 3, 4, 4], 'rating': [5, 3, 2, 2, 5, 1, 3, 4, 5] }) 现在,索引将自动分配,因此数据帧如下所示: p_id rating 0 1 5 1 1 3 2 1

这可能是一个非常简单的问题,但我试图了解熊猫的分组和索引是如何工作的

假设我有一个包含以下数据的数据帧:

df = pd.DataFrame(data={
    'p_id': [1, 1, 1, 2, 3, 3, 3, 4, 4],
    'rating': [5, 3, 2, 2, 5, 1, 3, 4, 5]
})
现在,索引将自动分配,因此数据帧如下所示:

      p_id    rating
0     1       5
1     1       3
2     1       2
3     2       2
4     3       5
5     3       1
6     3       3
7     4       4
8     4       5
当我尝试按
p\u id
对其进行分组时,我得到:

>> df[['p_id', 'rating']].groupby('p_id').count()
           rating
p_id        
1          3
2          1
3          3
4          2
我注意到
p\u id
现在成为分组数据帧的索引,但第一行看起来很奇怪——为什么它有
p\u id
索引,但评级为空?

我知道如何修复它,如果我这样做:

>> df[['p_id', 'rating']].groupby('p_id', as_index=False).count()
      p_id    rating
0     1       3
1     2       1
2     3       3
3     4       2
现在我没有这个奇怪的第一列,但我有索引和
p\u id


所以我的问题是,当我不使用
as_index=False
时,这一额外的行从何而来?有没有一种方法可以对数据帧进行分组,并将
p_id
作为索引,而不必处理这一额外的行?
如果有任何文档我可以阅读,我也将不胜感激

它只是一个索引名

演示:

请注意索引名称:
AAA

In [48]: df
Out[48]:
     p_id  rating
AAA
0       1       5
1       1       3
2       1       2
3       2       2
4       3       5
5       3       1
6       3       3
7       4       4
8       4       5
您可以使用以下方法将其清除:

没有“额外的行”,它只是熊猫如何直观地呈现GroupBy对象,即如何
pandas.core.GroupBy.generic.DataFrameGroupBy.\uu str\uuuuuuu
方法呈现分组的dataframe对象:
rating
是列,但是现在
p\u id
已经从列变成了(行)索引。


它们交错排列的另一个原因是索引可以是多索引(如果您按多列分组)。

感谢使用“重命名轴”的快捷方式。我知道如何摆脱它,但一开始它就在那里让人觉得有点尴尬。我只是好奇为什么它会首先发生,因为它是一个索引名。使用源示例DF尝试以下操作:
DF.index.name='AAA';打印(df)
哦,好的,知道了,所以它不是一个空行。谢谢你对一个愚蠢的问题的澄清和道歉:)不是一个愚蠢的问题。您正在尝试理解它,这对您很有好处。很高兴看到您回来没有“额外的行”,它只是熊猫如何直观地呈现GroupBy对象,即如何
pandas.core.GroupBy.generic.DataFrameGroupBy.\uu str\uuu
方法呈现分组的dataframe对象:
rating
是列,但是
p_id
现在已经从一个列变成了(行)索引。它们交错排列的原因也是因为如果按多个列分组,它可以是一个多索引。
In [48]: df
Out[48]:
     p_id  rating
AAA
0       1       5
1       1       3
2       1       2
3       2       2
4       3       5
5       3       1
6       3       3
7       4       4
8       4       5
In [42]: df[['p_id', 'rating']].groupby('p_id').count().rename_axis(None)
Out[42]:
   rating
1       3
2       1
3       3
4       2