簡體   English   中英

pandas.DataFrame.loc,在新列中標記數據

[英]pandas.DataFrame.loc , Labeling data in new column

我有一個像這樣的熊貓數據框:

     ranking
1    4.33
2    1.34
3    3.76
..

我想創建這個:

     ranking  label
1    4.33     2
2    1.34     0
3    3.76     1
..

因此,等級< 3.5導致標簽為0 ,等級在3.54.25之間導致標簽為1 ,等級> 4.25導致標簽為2

這是我到目前為止編寫的代碼:

df = pd.read_csv('./data/Step7_final.csv', index_col=False, encoding="ISO-8859-1")  
df['label'] = df.ranking.where(df.ranking > 3.4999, 0)
df.loc[df.label > 3.4999 and < 4.2499, 'label']  = 1
df.loc[df.label > 4.2499, 'label']  = 2

我將標簽1分配給3.5到4.25之間的排名值的第三行不起作用...如何使它起作用?

您需要使用按位&而不是and 這些條件必須用括號括起來

但是,更好的方法是使用pd.cut

pd.cut(df['ranking'], [-np.inf, 3.5, 4.25, np.inf], labels=[0, 1, 2])
Out[55]: 
0    2
1    0
2    1
Name: ranking, dtype: category
Categories (3, int64): [0 < 1 < 2]

你需要:

df['label'] = df.ranking.where(df.ranking > 3.4999, 0)
df.ix[(df.label > 3.4999) & (df.label < 4.2499), 'label'] = 1
df.ix[df.label > 4.2499, 'label']  = 2
print (df)
   ranking  label
1     4.33    2.0
2     1.34    0.0
3     3.76    1.0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM