我有一个要求唯一值的数据框,我想根据这些唯一值获得另一列。
尝试获取所有名称中的颜色
switch choice {
case "optionone":
// some instructions
fallthrough // control will not come out from this case but will go to next case.
case "optiontwo":
// some instructions
default:
return
我已经尝试了上面的代码,但是我正在尝试获取Harry和Cherry的红色和红色。
答案 0 :(得分:0)
1 如果您只想要哈利和樱桃的颜色,那就:
Color_Harry_Cherry=list(df.loc[[0,4],'Color'])
print(Color_Harry_Cherry)
出局:
['Red', 'Red']
2 如果要获取列表all_names
的颜色,则可以这样做以确保没有错误:
import numpy as np
import pandas as pd
raw_data={'Class':['A1','B1','C1','D1','A1'],'Name':['Harry','Christabel','Mel','Chris','Cherry'],'Color':['Red','Blue','Pink','Red','Red']}
df = pd.DataFrame(raw_data)
all_names = df['Name'][df['Class']=='A1'].unique()
print(all_names)
i=0
colors = []
while i<len(df['Color']):
if df.loc[df.index.values[i],'Name'] in all_names:
colors = colors + list(df.loc[[df.index.values[i]],'Color'])
i+=1
print(colors)
出局:
['Harry' 'Cherry']
['Red', 'Red']
3为什么您的代码不起作用?
请注意,df['Color'].isin(all_names)
返回:
0 False
1 False
2 False
3 False
4 False
Name: Color, dtype: bool
并且loc
方法需要将索引和要从DataFrame中选择的值所在的列作为参数。因此,您收到了一个错误。
答案 1 :(得分:0)
您的数据集似乎格式不正确。它应该看起来像这样:
raw_data={
'Class':['A1','B1','C1','D1','A1'],
'Name':['Harry','Christabel','Mel','Chris','Cherry'],
'Color':['Red','Blue','Pink','Red','Red']
}
在那之后,您可以继续设置您的列。检查此代码:
import pandas as pd
# Your dataset should look like this
raw_data={
'Class':['A1','B1','C1','D1','A1'],
'Name':['Harry','Christabel','Mel','Chris','Cherry'],
'Color':['Red','Blue','Pink','Red','Red']
}
# Assign dataset into pandas dataframe
df = pd.DataFrame(raw_data)
# Get Harry's color
harry = df.loc[df["Name"] == "Harry", "Color"].unique()[0]
# Get Cherry's color
cherry = df.loc[df["Name"] == "Cherry", "Color"].unique()[0]
# Print them
print("Harry's color is %s" % harry)
print("Cherry's color is %s" % cherry)
应该可以。