Pandas 有没有办法选择作为熊猫索引的列?

Pandas 有没有办法选择作为熊猫索引的列?,pandas,dataframe,Pandas,Dataframe,我有一个df,其字段为姓名,年龄,身高 完成后: df.set_index('Name') 我无法再执行访问该列的操作,如: len(df['Name']) 直到我做了一个: df.reset_index() 有没有更好的方法可以在不设置和重置索引的情况下执行此操作我认为您可以通过以下方式选择索引: df.index 或用于多索引,但也可用于索引: #select by position df.index.get_level_values(0) #select by name of le

我有一个df,其字段为姓名年龄身高

完成后:

df.set_index('Name')
我无法再执行访问该列的操作,如:

len(df['Name'])
直到我做了一个:

df.reset_index()

有没有更好的方法可以在不设置和重置索引的情况下执行此操作

我认为您可以通过以下方式选择
索引

df.index
或用于
多索引
,但也可用于
索引

#select by position
df.index.get_level_values(0)
#select by name of level
df.index.get_level_values('Name')
因此,您可以使用:

len(df.index)
样本:

df = pd.DataFrame({'Name':['John','Joe','Sue'],
                   'Age':[40,50,60],
                   'Height':[180,175,155]})

print (df)
   Age  Height  Name
0   40     180  John
1   50     175   Joe
2   60     155   Sue

df = df.set_index('Name')

print (df.index)
Index(['John', 'Joe', 'Sue'], dtype='object', name='Name')

print (df.index.get_level_values(0))
Index(['John', 'Joe', 'Sue'], dtype='object', name='Name')

print (df.index.get_level_values('Name'))
Index(['John', 'Joe', 'Sue'], dtype='object', name='Name')

print (len(df.index))
3

我想您可以通过以下方式选择
索引

df.index
或用于
多索引
,但也可用于
索引

#select by position
df.index.get_level_values(0)
#select by name of level
df.index.get_level_values('Name')
因此,您可以使用:

len(df.index)
样本:

df = pd.DataFrame({'Name':['John','Joe','Sue'],
                   'Age':[40,50,60],
                   'Height':[180,175,155]})

print (df)
   Age  Height  Name
0   40     180  John
1   50     175   Joe
2   60     155   Sue

df = df.set_index('Name')

print (df.index)
Index(['John', 'Joe', 'Sue'], dtype='object', name='Name')

print (df.index.get_level_values(0))
Index(['John', 'Joe', 'Sue'], dtype='object', name='Name')

print (df.index.get_level_values('Name'))
Index(['John', 'Joe', 'Sue'], dtype='object', name='Name')

print (len(df.index))
3

事实上,我的问题比那复杂一点。我正在尝试像groups=df.groupby(level=['Name','Field2'])['Name'].agg({'Count':'Count'})这样的操作,但是我不能在agg调用之前访问“Name”。是的,它更复杂。你能详细解释一下索引级别
Name
需要做什么吗?可能需要
apply
使用自定义函数,如
groups=df.groupby(level=['Name',Field2'])。apply(f)
在哪里可以使用level
Name
-
def(x):print(x)Name=sum(x.index.get_level_值('Name'))返回pd.Series([Name,x])['Count'].Count()],index=['Name','Count'])
我试图解决的原始问题是:实际上我的问题比这要复杂一些。我试图做一些类似groups=df.groupby(level=['Name','Field2'])['Name'].agg({'Count':'Count'})的事情,但我无法访问“Name”就在agg调用之前是的,它更复杂。你能解释一下索引级别
Name
需要做什么吗?可能需要
apply
使用自定义函数,如
groups=df.groupby(level=['Name',Field2'])。apply(f)
哪里可以使用level
Name
-
def(x):print(x)Name=sum(x.index.get_level_values('Name'))返回pd.Series([Name,x['Count'].Count()],index=['Name','Count'])
我试图解决的原始问题如下: