簡體   English   中英

Pandas dataframe 列從第一個非零值前向填充

[英]Pandas dataframe column forward fill from first non-zero value

我希望從第一個非零值中向前填充特定的 dataframe 列,我還想為每個組執行此操作。

df = pd.DataFrame(np.array([[1, 0, 0], [1, 5, 1], [1, 8, 0],[2, 4, 0],[2, 8, 1],[2, 81, 0]]),
                   columns=['ID', 'b', 'c'])

我想要的結果是:

df2 = pd.DataFrame(np.array([[1, 0, 0], [1, 5, 1], [1, 8, 1],[2, 4, 0],[2, 8, 1],[2, 81, 1]]),
                   columns=['ID', 'b', 'c'])

試圖:

df2 = df.groupby('ID',as_index = False)['c'].apply(lambda x: x.replace(to_replace=0, method='ffill'))

問題是原廠dataframe不退。 對此的任何幫助將不勝感激!

使用.values屬性:

df['c']=df.groupby('ID',as_index = False)['c'].apply(lambda x: x.replace(to_replace=0, method='ffill')).values

現在,如果您打印df ,您將獲得所需的 output:

    ID  b   c
0   1   0   0
1   1   5   1
2   1   8   1
3   2   4   0
4   2   8   1
5   2   81  1

嘗試這個 -

df['c'] = df.groupby('ID')['c'].apply(lambda x: x.replace(to_replace=0, method='ffill')) #print df after this.

暫無
暫無

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

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