Python Pivot数据帧,无需添加空格

2024-09-30 05:31:44 发布

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

下面的脚本获取股票数据并计算价格增量的统计信息。我的问题是正确地执行透视功能。透视功能可以工作,但它会创建不必要的空单元格。理想情况下,我希望轴到轴,所有数据点都在一行上

import pandas as pd
import yfinance as yf

    
slv = yf.Ticker("SLV")
slvhist = slv.history(period="1mo")

slvhist['delta'] = slvhist['Close'] - slvhist['Open']

perc =[.25, .50, .75, .99]
include =['object', 'float', 'int'] 
slvhist['delta'].describe(percentiles = perc, include = include)


df2 = pd.DataFrame({'StockCompare': slvhist['delta'].describe(percentiles = 

perc, include = include)})
df2.loc['stock'] = ['SLV']

df2['Metics'] = df2.index
df2 = df2.reset_index(drop=True)

dfp = df2.pivot(columns='Metics', values='StockCompare').assign(g = 0).groupby('g').max().reset_index().drop(columns='g')

这是我的支点的结果。这些值是分散的。它们都应该在第0行中,作为包含所有值的1行。 enter image description here


Tags: 数据import功能indexincludeaspddelta
1条回答
网友
1楼 · 发布于 2024-09-30 05:31:44

您可以尝试以下转换:

dfp = df2.pivot(columns='Metics', values='StockCompare').assign(g = 0).groupby('g').max().reset_index().drop(columns='g')

结果:

Metics   25%   50%    75%    99%  count   max      mean  min      std
0      -0.12  0.14  0.425  1.385   23.0  1.55  0.031739 -1.9  0.69405

这将使统计数据更具可读性

更改一点以前的代码,我们可以获得更简单的类似结果:

df2 = pd.DataFrame({'StockCompare': slvhist['delta'].describe(percentiles = perc, include = include)})
df2.T

输出:

              count      mean      std  min   25%   50%    75%    99%   max
StockCompare   23.0  0.031739  0.69405 -1.9 -0.12  0.14  0.425  1.385  1.55

相关问题 更多 >

    热门问题