如何将此for循环转换为数据框?

时间:2018-09-28 06:04:30

标签: python for-loop dataframe

如果我使用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 :(得分:1)

您在for循环的每次迭代中都重新分配data。那里的数据仅包含i = 2916的值。

如何创建一个列表,然后将其数据附加到for循环内?

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

print(data)

答案 1 :(得分:1)

我建议使用熊猫矢量化方法以提高速度和清洁度:

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:]]

答案 2 :(得分:0)

不要像kalehmann所建议的那样遍历数据帧,这是非常低效的。您可以按照Sven的建议调用data = df["close"].pct_change(),也可以使用与您定义的函数类似的函数:

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

然后您可以运行:

data_list = ['{:.6%}'.format(x) for x in data.tolist()]