2016-03-28 113 views
1

相當新的熊貓和我已經創建稱爲rollParametersDf的數據幀:追加行到數據幀

rollParametersDf = pd.DataFrame(columns=['insampleStart','insampleEnd','outsampleStart','outsampleEnd'], index=[]) 

與給出的4個標題。我想持有我正在進行的一項研究的參考日期。我想與索引名ROLL1添加數據的行(一次一個),roll2..rolln正在使用下面的代碼創建:

  outsampleEnd = customCalender.iloc[[totalDaysAvailable]] 
      outsampleStart = customCalender.iloc[[totalDaysAvailable-outsampleLength+1]] 
      insampleEnd = customCalender.iloc[[totalDaysAvailable-outsampleLength]] 
      insampleStart = customCalender.iloc[[totalDaysAvailable-outsampleLength-insampleLength+1]] 

      print('roll',rollCount,'\t',outsampleEnd,'\t',outsampleStart,'\t',insampleEnd,'\t',insampleStart,'\t') 

      rollParametersDf.append({insampleStart,insampleEnd,outsampleStart,outsampleEnd}) 

我一直在使用追加嘗試,但不能讓一個單獨的行附加。

我想最後的數據幀的樣子:

 insampleStart insampleEnd outsampleStart outsampleEnd 
roll1  1    5   6    8  
roll2  2    6   7    9 
: 
rolln 

任何幫助非常讚賞。

感謝

回答

1

你給鍵值對追加

df = pd.DataFrame({'insampleStart':[], 'insampleEnd':[], 'outsampleStart':[], 'outsampleEnd':[]}) 
df = df.append({'insampleStart':[1,2], 'insampleEnd':[5,6], 'outsampleStart':[6,7], 'outsampleEnd':[8,9]}, ignore_index=True) 
+0

非常感謝,但是當我添加的代碼我得到一個異常:提高類型錯誤( 類型錯誤「如果ignore_index = TRUE,只能追加一個系列」:只能追加一個系列,如果ignore_index = True或系列是否有名字。有什麼想法是什麼錯誤?謝謝 – Stacey

+0

編輯我的答案,現在應該工作 – kilojoules

0

documentation有附加行的數據幀的例子的大熊貓。此附加操作與列表中的操作不同,因爲此附加操作會生成新的DataFrame。這意味着對於每個附加操作,您正在重新構建並重建數據框,這非常低效。下面是一個例子的解決方案:

# create empty dataframe 
columns=['insampleStart','insampleEnd','outsampleStart','outsampleEnd'] 
rollParametersDf = pd.DataFrame(columns=columns) 

# loop through 5 rows and append them to the dataframe 
for i in range(5): 
    # create some artificial data 
    data = np.random.normal(size=(1, len(columns))) 
    # append creates a new dataframe which makes this operation inefficient 
    # ignore_index causes reindexing on each call. 
    rollParametersDf = rollParametersDf.append(pd.DataFrame(data, columns=columns), 
               ignore_index=True) 

print rollParametersDf 

    insampleStart insampleEnd outsampleStart outsampleEnd 
0  2.297031  1.792745  0.436704  0.706682 
1  0.984812 -0.417183  -1.828572  -0.034844 
2  0.239083 -1.305873  0.092712  0.695459 
3  -0.511505 -0.835284  -0.823365  -0.182080 
4  0.609052 -1.916952  -0.907588  0.898772