我如何基于另一个列python获取列的值

时间:2019-08-12 23:06:28

标签: python dataframe multiple-columns

我有一个要求唯一值的数据框,我想根据这些唯一值获得另一列。

尝试获取所有名称中的颜色

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的红色和红色。

2 个答案:

答案 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)

应该可以。