簡體   English   中英

Pandas 具有確定順序的 One-Hot-Encoding

[英]Pandas One-Hot-Encoding with deterministic order

假設我在 DataFrame 中有一個分類列(例如工作日)。 我想將它編碼為單熱編碼。 我正在使用pandas.get_dummies()來執行此操作。 但我看不出如何使訂單確定性。 例如,我有這兩個數據框

df1 = pd.DataFrame({'visitors':[220, 240, 180, 210, 220, 260, 270], 'weekday': ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']})
df2 = pd.DataFrame({'visitors':[240, 180, 210, 220, 260, 270, 220], 'weekday': ['Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun', 'Mon']})

如果我同時調用get_dummies() ,我會得到兩種不同的編碼。 我可以看到,因為順序不同。 但是有沒有辦法,不管值是如何進來的,我怎么能讓任何 DataFrame 具有相同的編碼? 例如: Mon=1000000Tue=0100000等?

pd.get_dummies(df1['weekday'])
pd.get_dummies(df2['weekday'])

get_dummies的行為是一致的。 您會看到差異,因為visitors的 position 發生了變化。

print(df1)
print(pd.get_dummies(df1['weekday']))

print()

print(df2)
print(pd.get_dummies(df2['weekday']))

這是 output:

   visitors weekday
0       220     Mon
1       240     Tue
2       180     Wed
3       210     Thu
4       220     Fri
5       260     Sat
6       270     Sun
   Fri  Mon  Sat  Sun  Thu  Tue  Wed
0    0    1    0    0    0    0    0
1    0    0    0    0    0    1    0
2    0    0    0    0    0    0    1
3    0    0    0    0    1    0    0
4    1    0    0    0    0    0    0
5    0    0    1    0    0    0    0
6    0    0    0    1    0    0    0

   visitors weekday
0       240     Tue
1       180     Wed
2       210     Thu
3       220     Fri
4       260     Sat
5       270     Sun
6       220     Mon
   Fri  Mon  Sat  Sun  Thu  Tue  Wed
0    0    0    0    0    0    1    0
1    0    0    0    0    0    0    1
2    0    0    0    0    1    0    0
3    1    0    0    0    0    0    0
4    0    0    1    0    0    0    0
5    0    0    0    1    0    0    0
6    0    1    0    0    0    0    0

暫無
暫無

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

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