【问题标题】:Pandas One-Hot-Encoding with deterministic order具有确定顺序的 Pandas One-Hot-Encoding
【发布时间】:2020-07-12 16:21:03
【问题描述】:

假设我在 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() 对于您提供的两个示例都按预期执行。你很可能被其他东西弄糊涂了,例如。假人是如何工作的。
  • pd.get_dummies() 基于 df.index。所以当然是不同的。

标签: python pandas one-hot-encoding


【解决方案1】:

get_dummies 的行为是一致的。 您会看到不同之处,因为 visitors 的位置发生了变化。

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

print()

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

这是输出:

   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

【讨论】:

    猜你喜欢
    • 2021-04-12
    • 2021-11-02
    • 1970-01-01
    • 2023-01-10
    • 1970-01-01
    • 2019-10-11
    • 2021-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多