Python 使用不同的函数作为行创建数据帧
我有这个Python 使用不同的函数作为行创建数据帧,python,pandas,function,dataframe,rows,Python,Pandas,Function,Dataframe,Rows,我有这个 df=pd.DataFrame({'A':[42.5,39.5,37.2,40,41,38,38.2,39.7], 'B': [13.3,12.8,12.1,12.3,13.3,12.2,12.4,12.8]}) 我想要一个数据框架,包含列['a']和['B']的描述函数,以及其他列,在本例中,我添加了列['T']和['I'] 下面的列['A']和['B']显示函数df['A'].descripe(),df['B'].descripe()的结果
df=pd.DataFrame({'A':[42.5,39.5,37.2,40,41,38,38.2,39.7],
'B': [13.3,12.8,12.1,12.3,13.3,12.2,12.4,12.8]})
我想要一个数据框架,包含列['a']和['B']的描述函数,以及其他列,在本例中,我添加了列['T']和['I']
下面的列['A']和['B']显示函数df['A'].descripe(),df['B'].descripe()的结果
以下是期望的结果:
T I A B
0 F n 8.00 8.00
1 F avg 39.51 12.65
2 F std 1.72 0.47
3 F min 37.20 12.10
4 F 25% 38.15 12.27
5 F 50% 39.60 12.60
6 F 75% 40.25 19.25
7 F max 42.50 13.30
我尝试了下面的代码,但没有成功:
df2=pd.DataFrame({
'T':['F','F','F','F','F','F','F','F'],
'I':['n','avg','std','min','25%','50%','75%','max'],
'A':[df['A'].describe()],
'B':[df['B'].describe()],
})
非常感谢您的帮助。如果数据帧的顺序
df2
与您可用于所有列的输出函数的顺序相匹配:
df2=pd.DataFrame({
'T':['F','F','F','F','F','F','F','F'],
'I':['n','avg','std','min','25%','50%','75%','max'],
})
df3 = pd.concat([df2, df.describe().reset_index(drop=True)], axis=1)
#if need specify some columns for describe
#df3 = pd.concat([df2, df[['A','B']].describe().reset_index(drop=True)], axis=1)
print (df3)
T I A B
0 F n 8.000000 8.000000
1 F avg 39.512500 12.650000
2 F std 1.722488 0.475094
3 F min 37.200000 12.100000
4 F 25% 38.150000 12.275000
5 F 50% 39.600000 12.600000
6 F 75% 40.250000 12.925000
7 F max 42.500000 13.300000
或者,您可以使用重命名
获取必要的索引值,然后通过T
添加列,方法是:
df3 = df.describe().rename_axis('I').rename({'count':'n','mean':'avg'}).reset_index()
df3.insert(0, 'T', 'F')
print (df3)
T I A B
0 F n 8.000000 8.000000
1 F avg 39.512500 12.650000
2 F std 1.722488 0.475094
3 F min 37.200000 12.100000
4 F 25% 38.150000 12.275000
5 F 50% 39.600000 12.600000
6 F 75% 40.250000 12.925000
7 F max 42.500000 13.300000