[英]How do i get values of a column based on another column python
我有一個要求唯一值的數據框,我想根據這些唯一值獲得另一列。
嘗試獲取all_names中的顏色
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()
all_colour=df.loc[df['Colour'].isin(all_names)]
我已經嘗試了上面的代碼,但是我正在嘗試獲取Harry和Cherry的紅色和紅色。
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中選擇的值所在的列作為參數。 因此,您收到了一個錯誤。
看起來您的數據集格式不正確。 它應該看起來像這樣:
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)
那應該工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.