2016-10-04 104 views
1

我有一個列表,我想從中進行迭代並在熊貓數據框中創建元組以模擬4號滑動窗口。我正在嘗試的是:創建熊貓數據框並在循環中追加值

tuples = pd.DataFrame() 
for index, row in expertsDF.iterrows(): 
     newlst = row['name'] 
     counter = 0 
     for x in newlst: 
     if counter < len(newlst) - 3: 
      tuples['A'] = x 
      tuples['B'] =newlst(counter+1) 
      tuples['C'] =newlst(counter+2) 
      tuples['D'] =newlst(counter+3) 
      counter = counter + 1 

的newlst看起來是這樣的:

list (var1, var2, var3....) 

,我的數據幀應該是這樣的:

 A  B  C  D 
1 var1 var2 var3 var4 
2 var2 var3 var4 var5 
3 var3 var4 var5 var6 

有沒有辦法在Python中做到這一點?

+0

您可以發佈您的輸出樣本嗎? –

+0

if條件內的代碼不正確,因此我沒有輸出。我只是試圖展示我想要做的事情。 – Kratos

+0

想要的輸出.. –

回答

1

這是密麼?

import pandas as pd 
tuples = pd.DataFrame(columns=['A', 'B', 'C', 'D']) 
newlst = "abcdefg" 
i = 0 
for x in newlst: 
    if i < len(newlst) - 3: 
     t = pd.DataFrame([[x, newlst[i + 1], newlst[i + 2], newlst[i + 3]]], 
         columns=['A', 'B', 'C', 'D']) 
    tuples = tuples.append(t, ignore_index=True) 
    i += 1 
print tuples 

此打印:

A B C D 
0 a b c d 
1 b c d e 
2 c d e f 
3 d e f g 
+0

謝謝!這正是我想要的。 – Kratos

1

如何創建自Series對象數據幀?

import pandas as pd 

data_list = list(map(lambda x: 'var{}'.format(x),range(0,100))) 
df = pd.Series(data_list[0:97]).to_frame(name='A') 
df['B'] = pd.Series(data_list[1:98]) 
df['C'] = pd.Series(data_list[2:99]) 
df['D'] = pd.Series(data_list[3:100]) 

df.head() 

# output 
#  A  B  C  D 
# 0 var0 var1 var2 var3 
# 1 var1 var2 var3 var4 
# 2 var2 var3 var4 var5 
# 3 var3 var4 var5 var6 
# 4 var4 var5 var6 var7