简体   繁体   English

非唯一索引上的 Dataframe.loc

[英]Dataframe.loc on non-unique index

I have a dataframe with a non-unique index.我有一个带有非唯一索引的dataframe I want to use .loc on a dataframe .我想在dataframe上使用.loc

data = [['tom', 10], ['nick', 15], ['juli', 14], ['tom', 12], ['tom', 64]]
df = pd.DataFrame(data, columns = ['Name', 'Age'])
df.set_index('Name', inplace = True)

When I try当我尝试

df.loc['tom': 'Age']

KeyError: "Cannot get left slice bound for non-unique label: 'tom'" KeyError:“无法获取非唯一 label 的左切片绑定:'tom'”

Why is that?这是为什么? Can I only .loc on dataframes with unique indexes?我只能在具有唯一索引的dataframes上使用.loc吗?

You implementation is wrong.你的实现是错误的。 Age is not an element of Name index and moreover if you want to slice between rows then rows must be unique. Age不是Name索引的元素,而且如果你想在行之间切片,那么行必须是唯一的。 Suppose you can't apply .loc[] on Name index like 'tom':'nick' because Name are not unique.假设您不能在像'tom':'nick'这样的Name索引上应用.loc[] ,因为Name不是唯一的。

Check pandas.loc[] for more details.查看pandas.loc[]了解更多详情。

You could do something like this:你可以这样做:

import pandas as pd


data = [['tom', 10], ['nick', 15], ['juli', 14], ['tom', 12], ['tom', 64]]
df = pd.DataFrame(data, columns = ['Name', 'Age'])
df.set_index('Name', inplace = True)
df = df.loc['tom', 'Age']

print(df)

Output: Output:

Name
tom    10
tom    12
tom    64
Name: Age, dtype: int64

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM