Как я могу преобразовать это для цикла в dataframe? - PullRequest
0 голосов
/ 28 сентября 2018

Если я использую print, я могу print все данные. Но когда я использую data=, он просто показывает мне значение i=2917.Как я могу преобразовать это for loop в фрейм данных.

import pandas as pd
df = pd.read_excel('C:/Users/aaaa/Desktop/rrrrr/twstock/1101.xlsx')
for i in range (1,2917):
     data='{:.6%}'.format((df['close'][i]/df['close'][i-1])-1)

Ответы [ 3 ]

0 голосов
/ 28 сентября 2018

Я бы порекомендовал использовать векторизованные методы pandas для скорости и чистоты:

df = pd.read_excel('C:/Users/aaaa/Desktop/rrrrr/twstock/1101.xlsx')
data = df["close"].pct_change()

Затем вы можете при желании перейти к списку строковых представлений, выполнив что-то вроде:

string_list = ['{:.6%}'.format(x) for x in data.tolist()[1:]]
0 голосов
/ 28 сентября 2018

НЕ проходите по циклу данных, как предложил Калехманн, это очень неэффективно.Вы можете либо вызвать data = df["close"].pct_change(), как предложил Sven, либо, если вы хотите использовать функцию, аналогичную той, которую вы определили:

data = df['first']/df['first'].shift(1)-1

И тогда вы можете запустить:

data_list = ['{:.6%}'.format(x) for x in data.tolist()]
0 голосов
/ 28 сентября 2018

Вы переназначаете data в каждой итерации цикла for.Там данные содержат только значение для i = 2916.

Как насчет создания списка и последующего добавления данных к нему внутри цикла for?

data = []
for i in range(1,2917):
    data.append('{:.6%}'.format((df['close'][i]/df['close'][i-1])-1))

print(data)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...