2017-06-03 50 views
1

我有一個數據幀和兩個Pandas系列ac和cc,我想將這兩個系列作爲列附加一個循環。但問題是,我的數據框有一個時間指數系列爲整數將兩個Pandas序列附加到一個數據幀,並按循環列

A='a' 

cc = pd.Series(np.zeros(len(A)*20)) 
ac = pd.Series(np.random.randn(10)) 

index = pd.date_range(start=pd.datetime(2017, 1,1), end=pd.datetime(2017, 1, 2), freq='1h') 

df = pd.DataFrame(index=index) 

我已經有一個回答我的問題,但沒有環here

現在,我需要添加一個循環,但我得到了在按鍵的錯誤:

az = [cc, ac] 

for i in az: 
    df.join(
      pd.concat(
      [pd.Series(s.values, index[:len(s)]) for s in [i]], 
      axis=1, keys=[i] 
      ) 
     ) 

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), ,a.any() or a.all(). 

keys = [i.all()]試過,我只是代替列名我有真假正確答案。

最終的結果應該是這樣的:

     cc ac 
2017-01-01 00:00:00 1 0.247043 
2017-01-01 01:00:00 1 -0.324868 
2017-01-01 02:00:00 1 -0.004868 
2017-01-01 03:00:00 1 0.047043 
2017-01-01 04:00:00 1 -0.447043 
2017-01-01 05:00:00 NaN NaN 
...     ... ... 
+0

我無法確切地告訴你想要的結果是什麼樣子。你希望它和你的其他問題的結果完全一樣嗎?剛剛生成一個循環? – piRSquared

+0

就是這樣。 – KinWolf

回答

1

創建一個元組的列表,其中第一個元素是列名,第二個是該系列本身。

az = [('cc', cc), ('ac', ac)] 

for c, s in az: 
    df[c] = pd.Series(s.values, index[:len(s)]) 

         cc  ac 
2017-01-01 00:00:00 0.0 2.062265 
2017-01-01 01:00:00 0.0 -0.225066 
2017-01-01 02:00:00 0.0 -1.698330 
2017-01-01 03:00:00 0.0 -1.068081 
2017-01-01 04:00:00 0.0 0.142956 
2017-01-01 05:00:00 0.0 -1.244232 
2017-01-01 06:00:00 0.0 -1.072311 
2017-01-01 07:00:00 0.0 0.242069 
2017-01-01 08:00:00 0.0 0.120093 
2017-01-01 09:00:00 0.0 -0.335500 
2017-01-01 10:00:00 0.0  NaN 
2017-01-01 11:00:00 0.0  NaN 
2017-01-01 12:00:00 0.0  NaN 
2017-01-01 13:00:00 0.0  NaN 
2017-01-01 14:00:00 0.0  NaN 
2017-01-01 15:00:00 0.0  NaN 
2017-01-01 16:00:00 0.0  NaN 
2017-01-01 17:00:00 0.0  NaN 
2017-01-01 18:00:00 0.0  NaN 
2017-01-01 19:00:00 0.0  NaN 
2017-01-01 20:00:00 NaN  NaN 
2017-01-01 21:00:00 NaN  NaN 
2017-01-01 22:00:00 NaN  NaN 
2017-01-01 23:00:00 NaN  NaN 
2017-01-02 00:00:00 NaN  NaN 
+0

非常感謝@piRSquared。 – KinWolf

+0

不客氣@KinWolf – piRSquared

相關問題