![](/img/trans.png)
[英]Pandas: More efficient way to update a column in pandas dataframe without a for loop
[英]how to modify a pandas dataframe column more efficient
我有一個像這樣的熊貓數據框
>>> df['d']
date
2013-11-18 0
2013-11-19 0
2013-11-20 0
2013-11-21 -1
2013-11-22 0
2013-11-25 0
2013-11-26 0
2013-11-27 0
2013-11-29 0
2013-12-02 1
2013-12-03 0
2013-12-04 0
2013-12-05 0
2013-12-06 0
2013-12-09 0
2013-12-10 0
2013-12-11 0
2013-12-12 0
2013-12-13 -1
2013-12-16 0
2013-12-17 0
2013-12-18 0
2013-12-19 0
2013-12-20 0
2013-12-23 0
2013-12-24 0
2013-12-26 0
2013-12-27 0
2013-12-30 0
2013-12-31 1
2014-01-02 0
2014-01-03 0
2014-01-06 0
2014-01-07 0
2014-01-08 -1
Name: d, dtype: int64
我想將其更改為
>>> df['d']
date
2013-11-18 0
2013-11-19 0
2013-11-20 0
2013-11-21 -1
2013-11-22 -1
2013-11-25 -1
2013-11-26 -1
2013-11-27 -1
2013-11-29 -1
2013-12-02 1
2013-12-03 1
2013-12-04 1
2013-12-05 1
2013-12-06 1
2013-12-09 1
2013-12-10 1
2013-12-11 1
2013-12-12 1
2013-12-13 -1
2013-12-16 -1
2013-12-17 -1
2013-12-18 -1
2013-12-19 -1
2013-12-20 -1
2013-12-23 -1
2013-12-24 -1
2013-12-26 -1
2013-12-27 -1
2013-12-30 -1
2013-12-31 1
2014-01-02 1
2014-01-03 1
2014-01-06 1
2014-01-07 1
2014-01-08 -1
Name: d, dtype: int64
到目前為止,我已使用此代碼進行更改
>>> for i in range(len(df)):
... if i != 0 and df['d'][i] ==0:
... df['d'][i] = df['d'][i-1]
...
代碼效率不高,有沒有更有效的方法? 我認為必須有一些特殊的函數(例如apply,roll_apply)來遍歷這些值,但是我無法弄清楚。 任何幫助,將不勝感激。
只需您即可做到
df['d'].replace(0 , method = 'ffill')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.