多列数据框仅限两列
Multiple columns dataframe to two columns only
是否有 pandas' 技巧来转换以下形式的数据框:
12345 98765
XYXABC 182.000 0.0
JKLVWX 140.000 0.0
RSTUVW 110.000 0.0
到表格:
Col_1 Col_2
12345 XYXABC 182.000
12345 JKLVWX 140.000
12345 RSTUVW 110.000
98765 XYXABC 0.0
98765 JKLVWX 0.0
98765 RSTUVW 0.0
?
PS: 行和列比较多,我只放了几个为了更好看。
使用DataFrame.unstack
with DataFrame.reset_index
and DataFrame.set_axis
:
df1 = df.unstack().reset_index(level=1).set_axis(['Col_1','Col_2'], axis=1)
print (df1)
Col_1 Col_2
12345 XYXABC 182.0
12345 JKLVWX 140.0
12345 RSTUVW 110.0
98765 XYXABC 0.0
98765 JKLVWX 0.0
98765 RSTUVW 0.0
或DataFrame.melt
的解决方案:
df1 = (df.rename_axis('Col_1')
.melt(ignore_index=False, value_name='Col_2')
.reset_index()
.set_index('variable')
.rename_axis(None))
print (df1)
Col_1 Col_2
12345 XYXABC 182.0
12345 JKLVWX 140.0
12345 RSTUVW 110.0
98765 XYXABC 0.0
98765 JKLVWX 0.0
98765 RSTUVW 0.0
你可以试试
out = (df.T.melt(value_vars=df.index,
var_name='Col_1', value_name='Col_2',
ignore_index=False))
print(out)
Col_1 Col_2
12345 XYXABC 182.0
98765 XYXABC 0.0
12345 JKLVWX 140.0
98765 JKLVWX 0.0
12345 RSTUVW 110.0
98765 RSTUVW 0.0
是否有 pandas' 技巧来转换以下形式的数据框:
12345 98765
XYXABC 182.000 0.0
JKLVWX 140.000 0.0
RSTUVW 110.000 0.0
到表格:
Col_1 Col_2
12345 XYXABC 182.000
12345 JKLVWX 140.000
12345 RSTUVW 110.000
98765 XYXABC 0.0
98765 JKLVWX 0.0
98765 RSTUVW 0.0
?
PS: 行和列比较多,我只放了几个为了更好看。
使用DataFrame.unstack
with DataFrame.reset_index
and DataFrame.set_axis
:
df1 = df.unstack().reset_index(level=1).set_axis(['Col_1','Col_2'], axis=1)
print (df1)
Col_1 Col_2
12345 XYXABC 182.0
12345 JKLVWX 140.0
12345 RSTUVW 110.0
98765 XYXABC 0.0
98765 JKLVWX 0.0
98765 RSTUVW 0.0
或DataFrame.melt
的解决方案:
df1 = (df.rename_axis('Col_1')
.melt(ignore_index=False, value_name='Col_2')
.reset_index()
.set_index('variable')
.rename_axis(None))
print (df1)
Col_1 Col_2
12345 XYXABC 182.0
12345 JKLVWX 140.0
12345 RSTUVW 110.0
98765 XYXABC 0.0
98765 JKLVWX 0.0
98765 RSTUVW 0.0
你可以试试
out = (df.T.melt(value_vars=df.index,
var_name='Col_1', value_name='Col_2',
ignore_index=False))
print(out)
Col_1 Col_2
12345 XYXABC 182.0
98765 XYXABC 0.0
12345 JKLVWX 140.0
98765 JKLVWX 0.0
12345 RSTUVW 110.0
98765 RSTUVW 0.0