Python(pandaps)使用数字数据,但添加非数字数据b

2024-05-18 06:52:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个CSV文件,如下所示:

Build,Avg,Min,Max
BuildA,56.190,39.123,60.1039
BuildX,57.11,40.102,60.200
BuildZER,55.1134,35.129404123,60.20121

我想得到每列的平均值、最小值、最大值,并将这些统计值作为一个新行。我排除非数字列(build列),然后运行统计信息。我通过以下方式实现:

^{pr2}$

如果我将这些数据写入CSV,它看起来像:

,Avg,Min,Max
0,56.19,39.123,60.1039
1,57.11,40.102,60.2
2,55.1134,35.129404123,60.20121
Min,55.1134,35.129404123,60.1039
Average,55.8817,37.3709520615,60.1522525
Max,57.11,40.102,60.20121

这与我想要的很接近,但是我希望Build列再次成为column one,并且在Min、Average、Max上有构建名。基本上是这样:

Builds,Avg,Min,Max
BuildA,56.19,39.123,60.1039
BuildX,57.11,40.102,60.2
BuildZER,55.1134,35.129404123,60.20121
Min,55.1134,35.129404123,60.1039
Average,55.8817,37.3709520615,60.1522525
Max,57.11,40.102,60.20121

我试图通过以下方式实现这一点:

df.insert(0,'builds', save)
with open('fakedata.csv', 'w') as f:
    df.to_csv(f)

但这给了我一个CSV:

,builds,Avg,Min,Max
0,Build1,56.19,39.123,60.1039
1,Build2,57.11,40.102,60.2
2,Build3,55.1134,35.129404123,60.20121
Min,,55.1134,35.129404123,60.1039
Average,,55.8817,37.3709520615,60.1522525
Max,,57.11,40.102,60.20121

我该怎么解决这个问题?在


Tags: 文件csvbuilddf方式minmaxavg
1条回答
网友
1楼 · 发布于 2024-05-18 06:52:02

IIUC:

df_out = pd.concat([df.set_index('Build'),df.set_index('Build').agg(['max','min','mean'])]).rename(index={'max':'Max','min':'Min','mean':'Average'}).reset_index()

输出:

^{pr2}$

相关问题 更多 >