Сводный фрейм данных Python без добавления пробелов

#python #python-3.x #pandas #dataframe

#python #python-3.x #pandas #фрейм данных

Вопрос:

Приведенный ниже скрипт получает биржевые данные и вычисляет статистику по разнице цен. Моя проблема заключается в правильном выполнении pivot Функция pivot работает, но она создает ненужные пустые ячейки. В идеале я хотел бы, чтобы pivot поворачивался, и все точки данных находились в одной строке.

 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 строка со всеми значениями.
введите описание изображения здесь

Комментарии:

1. Пожалуйста, покажите примеры того, что возвращает ваш код и что вы ожидаете, что он вернет.

2. Спасибо, ipj да, это было то, что я искал.

Ответ №1:

Вы можете попробовать следующие преобразования:

 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