我有一个带有分类变量Segment
的数据框ID Segment Var1 Var2 Var3
1 AAA 1 1 1
2 BBB 1 0 1
3 BBB 1 1 1
4 AAA 0 1 1
5 CCC 0 1 1
6 AAA 0 0 1
7 AAA 0 1 1
8 AAA 1 0 1
9 BBB 1 0 1
10 CCC 1 0 1
我想将列Segment转换为每个变量的3个类别,如下所示:
ID Var1_AAA Var1_BBB Var1_CCC Var2_AAA Var2_BBB Var2_CC Var3_AAA Var3_BBB Var3_CCC
1 1 null null 1 null null 1 null null
2 null 1 null null 0 null null 1 null
3 null 1 null null 1 null null 1 null
4 0 null null 1 null null 1 null null
5 null null 0 null null 1 null null 1
6 0 null null 0 null null 1 null null
7 0 null null 1 null null 1 null null
8 1 null null 0 null null 1 null null
9 null 1 null null 0 null null 1 null
10 null null 1 null null 0 null null 1
你可以帮帮我吗?
答案 0 :(得分:3)
tell application "Terminal"
set W to the first window whose tty of tab 1 contains "ttys001"
set T to tab 1 of W
set the current settings of T to the first settings set whose name is "AmadanLocal"
end tell
的melt
pivot_table
v = df.melt(['ID', 'Segment'])
v = v.pivot_table(index='ID',
columns=['Segment', 'variable'],
values='value',
fill_value='null')
v.columns = v.columns.map('{0[1]}_{0[0]}'.format)
我建议省略print(v)
Var1_AAA Var2_AAA Var3_AAA Var1_BBB Var2_BBB Var3_BBB Var1_CCC Var2_CCC \
ID
1 1 1 1 null null null null null
2 null null null 1 0 1 null null
3 null null null 1 1 1 null null
4 0 1 1 null null null null null
5 null null null null null null 0 1
6 0 0 1 null null null null null
7 0 1 1 null null null null null
8 1 0 1 null null null null null
9 null null null 1 0 1 null null
10 null null null null null null 1 0
Var3_CCC
ID
1 null
2 null
3 null
4 null
5 1
6 null
7 null
8 null
9 null
10 1
,而是将其替换为fill_value='null'
或完全删除,因为将字符串与数字数据混合会影响性能。但是,如果你只想保存结果,那就没关系了。
答案 1 :(得分:1)
另一种方式是,
使用unstack
格式和您的数据框列名称
df= df.set_index(['ID','Segment']).unstack(fill_value='null')
df.columns = ['_'.join(val ) for val in zip(df.columns.get_level_values(0),df.columns.get_level_values(1))]
或以更优雅的方式格式化列
df.columns = df.columns.map('{0[0]}_{0[1]}'.format)
print df
输出:
Var1_AAA Var1_BBB Var1_CCC Var2_AAA Var2_BBB Var2_CCC Var3_AAA Var3_BBB \
ID
1 1 null null 1 null null 1 null
2 null 1 null null 0 null null 1
3 null 1 null null 1 null null 1
4 0 null null 1 null null 1 null
5 null null 0 null null 1 null null
6 0 null null 0 null null 1 null
7 0 null null 1 null null 1 null
8 1 null null 0 null null 1 null
9 null 1 null null 0 null null 1
10 null null 1 null null 0 null null
Var3_CCC
ID
1 null
2 null
3 null
4 null
5 1
6 null
7 null
8 null
9 null
10 1