我的循环总是跳过第一个索引

时间:2018-05-29 12:55:54

标签: python loops dataframe

每次创建循环函数时,第一个问题都很常见:

例如:

dfd = quandl.get("FRED/DEXBZUS")
dfe = quandl.get("ECB/EURBRL")


df = [dfd, dfe]
dps = []

for i in df:

我只获取第二个数据帧值。

使用此:

dfd = quandl.get("FRED/DEXBZUS")


df = [dfd]
dps = []

for i in df:

我明白了:

Empty DataFrame
Columns: []
Index: []

如果我使用它(重复第一个):

dfd = quandl.get("FRED/DEXBZUS")
dfe = quandl.get("ECB/EURBRL")


df = [dfd, dfd, dfe]
dps = []

for i in df:

我正确地得到了两个数据帧

Examples :

import quandl
import pandas as pd
#import matplotlib
import matplotlib.pyplot as plt


dfd = quandl.get("FRED/DEXBZUS")
dfe = quandl.get("ECB/EURBRL")


df = [dfd, dfe]
dps = []

for i in df:
    df1 = i.reset_index()
    results = pd.DataFrame(df1)
    results = results.rename(columns={'Date': 'ds','Value': 'y'})
    dps = pd.DataFrame(dps.append(results))
    print(dps)


Empty DataFrame
Columns: []
Index: []
             ds       y
0    2008-01-02  2.6010
1    2008-01-03  2.5979
2    2008-01-04  2.5709
3    2008-01-07  2.6027
4    2008-01-08  2.5796

更新

正如布鲁诺所说,它与这个功能有关:

dps = pd.DataFrame(dps.append(results))

如何将所有数据集附加到一个数据框中?

2 个答案:

答案 0 :(得分:1)

#this will print every element in df
for i in df:
    print i

此外,

for dfIndex, i in enumerate(df):
    print i
    print dfIndex #this will print the index of i in df

请注意,索引从0开始,而不是1。

答案 1 :(得分:1)

result=Pd.DataFrame(df1)如果您创建这样的数据框并且不提供列,那么默认情况下首先将第一行作为列,稍后您将重命名默认创建的列。 所以请创建pd.DataFrame(df1,columns=[column_list])。 第一行不会跳过。