Добавление значений в строку к следующей строке и удаление первой строки в кадре данных pandas

private boolean current;

public void setCurrent(boolean current){
    this.current=current;
}

public boolean hasCurrent(){
    return this.current;
}
1
задан makewhite 8 March 2019 в 00:51
поделиться

4 ответа

Предполагая, что ваш df упорядочен, вы можете просто использовать комбинацию np.where и shift, затем фильтровать

import numpy as np
import pandas as pd

df = pd.DataFrame()
df['Geo'] = ['toronto','toronto','toronto']
df['Age'] = ['-1 ~ 7','0 ~ 4','5 ~ 9']
df['2010'] = [2,5,4]


df['2010'] = np.where(df['Age']=='0 ~ 4',df['2010']+df['2010'].shift(1),df['2010'])
df = df[~(df['Age']=='-1 ~ 7')]
display(df)

    Geo     Age     2010
1   toronto 0 ~ 4   7.0
2   toronto 5 ~ 9   4.0
0
ответ дан rhedak 8 March 2019 в 00:51
поделиться

Создать ключ справки здесь

s=df.Age=='5 ~ 9'
yourdf=df.groupby([df.Geo,s]).agg({'Age':'last','2010':'sum','2011':'sum','2012':'sum'})
yourdf
                 Age  2010  2011  2012
Geo     Age                           
bc      False  0 ~ 4     3     6     3
        True   5 ~ 9     3     1     1
mt      False  0 ~ 4     6     5     5
        True   5 ~ 9     6     6     6
toronto False  0 ~ 4     7     4     9
        True   5 ~ 9     4     5     5
0
ответ дан WeNYoBen 8 March 2019 в 00:51
поделиться

Если вы хотите удалить данные на основе значения, просто отфильтровав кадр данных.

new_df = df[df.Age != '-1 ~ 7']
new_df
0
ответ дан Yusufsn 8 March 2019 в 00:51
поделиться

Давайте попробуем так:

age_ind = df.index[df['Age'] == '0~4'].tolist()

for i in age_ind:
    df.at[i,['2010', '2011', '2012']]  = (df.at[i,"2010"]+df.at[i-1,"2010"]),(df.at[i,"2011"]+df.at[i-1,"2011"]),(df.at[i,"2012"]+df.at[i-1,"2012"])

df.drop(df[df.Age == '-1~7'].index)

Вывод:

    Geo       Age     2010  2011 2012
1   toronto     0~4     7   4   9
2   toronto     5~9     4   5   5
4   bc          0~4     3   6   3
5   bc          5~9     3   1   1
7   mt          0~4     6   5   5
8   mt          5~9     6   6   6
0
ответ дан Jack Fleeting 8 March 2019 в 00:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: