簡體   English   中英

如何在Python中使用for循環將值保存在pandas dataframe的列中

[英]how to save values in a column of pandas dataframe using for loop in python

我有一個熊貓數據框,我想添加一個列(A)索引0的值和另一個列(B)索引1的值,並將結果保存在列A的索引1中。我在一個數據幀中有列B ,我嘗試了以下代碼,但無法正常工作-

A = [None] * len(df)
A[0] = A["B"][0]
df["A"] = A

df:

               B    A
   Date     
 2017-09-30   0.0   0
 2017-10-01   1.0   None
 2017-10-02   2.0   None
 2017-10-03   3.0   None
 2017-10-04   4.0   None

for i in range(len(df)-1):
    df["A"][i] = df["A"][i-1] + df["B"][i]   

預期產量

               B    A
   Date     
2017-09-30    0.0   0
2017-10-01    1.0   1
2017-10-02    2.0   3
2017-10-03    3.0   6
2017-10-04    4.0   10

如果您使用的是熊貓,請盡量不要用於循環,這恰好超過了我認為的熊貓目的。 也許您可以嘗試這樣的事情:

  1. 向上移動Shift A(您可以在熊貓中查看Shift功能)並將其另存為新的Col
  2. 只需將newA與col B相加

我相信您首先不需要創建列A並使用:

print (df)
               B
Date            
2017-09-30   0.0
2017-10-01   1.0
2017-10-02   2.0
2017-10-03   3.0
2017-10-04   4.0

df.loc[df.index[0], 'B'] = 0
df['A'] = df['B'].cumsum()
print (df)
              B     A
Date                 
2017-09-30  0.0   0.0
2017-10-01  1.0   1.0
2017-10-02  2.0   3.0
2017-10-03  3.0   6.0
2017-10-04  4.0  10.0

要么:

print (df)
               B
Date            
2017-09-30  10.0
2017-10-01   1.0
2017-10-02   2.0
2017-10-03   3.0
2017-10-04   4.0

b = df['B'].values.copy()
b[0] = 0
df['A'] = b.cumsum()
print (df)
               B     A
Date                  
2017-09-30  10.0   0.0
2017-10-01   1.0   1.0
2017-10-02   2.0   3.0
2017-10-03   3.0   6.0
2017-10-04   4.0  10.0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM