gpt4 book ai didi

python-3.x - 如何用自定义名称融化 Pandas

转载 作者:行者123 更新时间:2023-12-02 18:11:43 27 4
gpt4 key购买 nike

我有一张这样的 table

<表类=“s-表”><标题>设备类型版本池测试平均值测试P50测试P90testP99测试标准WidgetMeanWidgetP50WidgetP90WidgetP99WidgetStd <正文>PNB0Q78108162123124136140.8141.8821.352.206.49.643.92

我希望它像这样转换:

<表类=“s-表”><标题>设备类型版本池姓名平均值P50P90P99标准 <正文>PNB0Q78108162123测试123136140.8142.8821.35PNB0Q78108162123小工具2.206.49.643.92

我尝试使用 Melt 但得到:

df.melt(id_vars=["device_type", "version", "pool"], var_name="Name", value_name="Value")
<表类=“s-表”><标题>设备类型版本池姓名值 <正文>PNB0Q78108162测试测试平均值124.00PNB0Q78108162测试测试P50136.00PNB0Q78108162测试测试P90140.80PNB0Q78108162测试测试P99141.88PNB0Q78108162测试测试标准21.35

关于如何达到预期解决方案的任何想法

最佳答案

您可以先使用 pd.wide_to_long 和一些列命名清理来完成此操作,然后重新调整形状:

df = df.rename(columns={'Std':'testStd',
'TestP90':'testP90',
'TestP99':'testP99',
'TestP50':'testP50'})
df_out = pd.wide_to_long(df,
['test','Widget'],
['device_type', 'version', 'pool'],
'Measure', '', '.+' )
df_out = df_out.unstack(-1).stack(0).reset_index()
df_out

输出:

Measure device_type  version  pool level_3   Mean    P50    P90     P99    Std
0 PNB0Q7 8108162 123 Widget 2.2 0.0 6.4 9.64 3.92
1 PNB0Q7 8108162 123 test 124.0 136.0 140.8 141.88 21.35

更新重命名上面的“level_3”:

df = df.rename(columns={'Std':'testStd',
'TestP90':'testP90',
'TestP99':'testP99',
'TestP50':'testP50'})
df_out = pd.wide_to_long(df,
['test','Widget'],
['device_type', 'version', 'pool'],
'Measure', '', '.+' )\
.rename_axis('Instrument', axis=1) #add this line to rename column header axis
df_out = df_out.unstack(-1).stack(0).reset_index()
df_out

输出:

Measure device_type  version  pool Instrument   Mean    P50    P90     P99    Std
0 PNB0Q7 8108162 123 Widget 2.2 0.0 6.4 9.64 3.92
1 PNB0Q7 8108162 123 test 124.0 136.0 140.8 141.88 21.35

关于python-3.x - 如何用自定义名称融化 Pandas ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72222538/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com