我想问一个this question的扩展名,其中讨论了为缺失的类添加标签以确保假人被正确编码为空白。
有没有办法在多组数据中自动执行此操作,并且标签会自动在两者之间同步? (即测试与训练集)。即相同的列,但在每个?
中表示不同类别的数据例如为: 假设我有以下两个数据帧:
df1 = pd.DataFrame.from_items([('col1', list('abc')), ('col2', list('123'))])
df2 = pd.DataFrame.from_items([('col1', list('bcd')), ('col2', list('234'))])
df1
col1 col2
1 a 1
2 b 2
3 c 3
df2
col1 col2
1 b 2
2 c 3
3 d 4
我希望:
df1
col1_a col1_b col1_c col1_d col2_1 col2_2 col2_3 col2_4
1 1 0 0 0 1 0 0 0
2 0 1 0 0 0 1 0 0
3 0 0 1 0 0 0 1 0
df2
col1_a col1_b col1_c col1_d col2_1 col2_2 col2_3 col2_4
1 0 1 0 0 0 1 0 0
2 0 0 1 0 0 0 1 0
3 0 0 0 1 0 0 0 1
无需提前指定
col1_labels = ['a', 'b', 'c', 'd'], col2_labels = ['1', '2', '3', '4']
我可以一次性为许多列系统地执行此操作吗?我想象一下当传入两个或更多数据帧时的假设(假设所有列都相同):
答案 0 :(得分:1)
我认为如果两个Dataframe
中的相同分类列名称都需要reindex
所有列的联合:
print (df1)
df1
1 a
2 b
3 c
print (df2)
df1
1 b
2 c
3 d
df1 = pd.get_dummies(df1)
df2 = pd.get_dummies(df2)
union = df1.columns | df2.columns
df1 = df1.reindex(columns=union, fill_value=0)
df2 = df2.reindex(columns=union, fill_value=0)
print (df1)
df1_a df1_b df1_c df1_d
1 1 0 0 0
2 0 1 0 0
3 0 0 1 0
print (df2)
df1_a df1_b df1_c df1_d
1 0 1 0 0
2 0 0 1 0
3 0 0 0 1