[英]Python pandas sort multiple columns based on their values and other rows
I would like to sort columns like that as now it just fills in from 0 to make sure there are none我想像这样对列进行排序,因为现在它只是从 0 开始填充以确保没有
websiteName 0 1 2 3
0 websiteName1 TLSv1.0 TLSv1.1 TLSv1.2 None
1 websiteName1 TLSv1.2 None None None
2 websiteName2 TLSv1.2 TLSv1.3 None None
3 websiteName3 TLSv1.0 TLSv1.2 TLSv1.3 None
4 websiteName4 TLSv1.2 TLSv1.3 None None
Expected result预期结果
websiteName 0 1 2 3
0 websiteName1 TLSv1.0 TLSv1.1 TLSv1.2 None
1 websiteName1 None None TLSv1.2 None
2 websiteName2 None None TLSv1.2 TLSv1.3
3 websiteName3 TLSv1.0 None TLSv1.2 TLSv1.3
4 websiteName4 None None TLSv1.2 TLSv1.3
You can melt
, then pivot
:你可以
melt
,然后pivot
:
(df
.replace({'None': pd.NA}) # assuming 'None' strings
.melt(id_vars='websiteName')
.assign(TLS=lambda d: d['value'])
.pivot_table(index='websiteName', columns='TLS', values='value', aggfunc='first')
.set_axis(range(len(df.columns)-1), axis=1) # comment to keep TLSvx.x names
.reset_index()
)
output: output:
websiteName 0 1 2 3
0 websiteName1 TLSv1.0 TLSv1.1 TLSv1.2 NaN
1 websiteName2 NaN NaN TLSv1.2 TLSv1.3
2 websiteName3 TLSv1.0 NaN TLSv1.2 TLSv1.3
3 websiteName4 NaN NaN TLSv1.2 TLSv1.3
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.