Ошибка при попытке .insert () в dataframe - PullRequest
0 голосов
/ 10 июля 2019

У меня есть некоторый код, который принимает файл CSV, который находит мин / макс каждый день, а затем сообщает мне, в какое время это происходит.У меня также есть 2 переменные, чтобы найти процент для обоих макс / мин.

Это в настоящее время вывод для кадра данных

>Out
       High   Low
10:00   6.0  10.0
10:05  10.0   3.0
10:10   1.0   7.0
10:15   1.0   NaN
10:20   4.0   4.0
10:25   4.0   4.0
10:30   5.0   1.0
10:35   5.0   6.0
10:40   3.0   2.0
10:45   4.0   5.0
10:50   4.0   1.0
10:55   3.0   4.0
11:00   4.0   5.0
>

Тогда у меня есть 2 varables для% от максимумов / минимумов.. (Показан только тел.)

>[84 rows x 2 columns]
Time
10:00    0.015306
10:05    0.025510
10:10    0.002551
10:15    0.002551
10:20    0.010204
10:25    0.010204
>

Я пытался сделать .insert (), но получаю эту ошибку.

TypeError: insert () занимает от 4 до 5 позиционныхаргументы, но 6 были даны

Это был мой код

#adding % to end of dataframe
result.insert(3,"High %", ph, "Low %", pl)

import pandas as pd
from matplotlib import pyplot as plt

df = pd.read_csv("C:\\Users\\me\\Downloads\\file.csv", encoding = "ISO-8859-1")


#High grouped by Date
df2 = df.loc[df.groupby('Date')['High'].idxmax()]


#dropping columns of no use
df2.drop(['Ticker','Open','Low','Close'], axis=1, inplace=True)

#creating a variable to bucket the time
TH = df2.groupby('Time').size()

#Low grouped by Date
df3 = df.loc[df.groupby('Date')['Low'].idxmin()]

#dropping columns of no use
df3.drop(['Ticker','Open','Low','Close'], axis=1, inplace=True)

#creating a variable to bucket the time
TL = df3.groupby('Time').size()

#Merging Both Dataframes
frames = [TH, TL]
result = pd.concat((frames), axis = 1)
result.columns = ['High','Low']

#Percentage
ph = TH/TH.sum()
pl = TL/TL.sum()

Я бы хотел, чтобы вывод отображал% в столбцах 3 и 4

>Out
       High   Low    % High    %Low
10:00   6.0  10.0    .015306   
10:05  10.0   3.0    .025510
10:10   1.0   7.0    .002551
10:15   1.0   NaN    .002551
10:20   4.0   4.0    .010204
10:25   4.0   4.0    .010204

>

1 Ответ

1 голос
/ 10 июля 2019

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

#adding % to end of dataframe
result["High %"] = ph
result["Low %"] = pl

Если вы настаиваете на использовании вставки, правильный синтаксис будет:

result.insert(2, "High %", ph)
result.insert(3, "Low %", pl)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...