Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.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_Indexing_Dataframe - Fatal编程技术网

Python 如何在熊猫的层次索引中使用输入列作为主要索引?

Python 如何在熊猫的层次索引中使用输入列作为主要索引?,python,pandas,indexing,dataframe,Python,Pandas,Indexing,Dataframe,我的csv文件包含以下列: col1 col2 1 0.9 1 0.3 2 0.4 2 0.9 2 0.1 3 0.0 4 0.5 4 0.9 我将其放入一个数据帧中,因此df自然会向所有行添加一个索引。 我希望保留第一列作为主要索引,并且在每个主要索引中都有一个次要索引,例如: ID col1 col2 1 1 0.9 2 0.3 2

我的csv文件包含以下列:

col1   col2

1      0.9
1      0.3
2      0.4
2      0.9
2      0.1
3      0.0
4      0.5
4      0.9
我将其放入一个数据帧中,因此df自然会向所有行添加一个索引。
我希望保留第一列作为主要索引,并且在每个主要索引中都有一个次要索引,例如:

ID       col1   col2

1      1        0.9
       2        0.3
2      1        0.4
       2        0.9
       3        0.1
3      1        0.0
4      1        0.5
       2        0.9
我该怎么做

我的最终目标是能够消除某个主ID的行。例如,如果主ID 4中的行的平均值低于0.5,那么我将消除这些行


我认为最好的方法是使用主索引,但如果有更好的方法,请告诉我。

首先,您可以从
col1
创建列
ID
,然后删除
col1

然后,您可以在
ID
列上使用
DataFrame.groupby
,然后使用以获得所需的结果。范例-

df['ID'] = df['col1']
df = df.drop('col1',axis=1)
df['col1'] = (df.groupby('ID').cumcount() + 1)
演示-

In [20]: df
Out[20]:
   col1  col2
0     1   0.9
1     1   0.3
2     2   0.4
3     2   0.9
4     2   0.1
5     3   0.0
6     4   0.5
7     4   0.9

In [21]: df['ID'] = df['col1']

In [23]: df = df.drop('col1',axis=1)

In [24]: df['col1'] = (df.groupby('ID').cumcount() + 1)

In [25]: df
Out[25]:
   col2  ID  col1
0   0.9   1     1
1   0.3   1     2
2   0.4   2     1
3   0.9   2     2
4   0.1   2     3
5   0.0   3     1
6   0.5   4     1
7   0.9   4     2

在此之后,如果您想要
id
作为索引,您可以使用传递
'id'
的方法作为参数。

这很酷!谢谢但是,即使我像你说的那样使用
set\u index
添加该索引,我如何轻松地选择该主索引的所有行?i、 例如,在我的问题中,假设我想选择主索引
1
的所有行?