Добавьте значение в Pandas в конце строки с тем же идентификатором - PullRequest
0 голосов
/ 12 ноября 2018

У меня есть DataFrame, как показано ниже:

           ID   value  line_end
     1     1    5      -1
     2     1    5      -1
     3     1    7      -1
     4     2    3      -1
     5     2    4      -1
     6     2    8      -1
     7     2    23     -1
     8     3    12     -1
     9     4    1      -1
     10    4    2      -1
     11    4    3      -1
     12    4    5      -1
     13    5    2      -1

Что я хочу сделать, это добавить значение -2 в конце последней строки из набора строк с одинаковым идентификатором. Это должно выглядеть как ниже. Стоит ли использовать цикл for или есть другой способ?

           ID   value  line_end
     1     1    5      -1
     2     1    5      -1
     3     1    7      -1 -2
     4     2    3      -1
     5     2    4      -1
     6     2    8      -1
     7     2    23     -1 -2
     8     3    12     -1 -2
     9     4    1      -1
     10    4    2      -1
     11    4    3      -1
     12    4    5      -1 -2
     13    5    2      -1 -2

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018

Один из подходов может быть таким:

df['line_end'] = np.where(df['ID']!= df['ID'].shift(-1), df['line_end'].map(str)+' -2',df['line_end'])
0 голосов
/ 12 ноября 2018

Вы можете использовать groupby при условии, что "line_end" является строковым столбцом.

df.line_end = df.line_end.astype(str)
idx = df.groupby('ID').line_end.apply(lambda x: x.index[-1])
df.loc[idx, 'line_end'] += ' -2'

print(df) 
    ID  value line_end
1    1      5       -1
2    1      5       -1
3    1      7    -1 -2
4    2      3       -1
5    2      4       -1
6    2      8       -1
7    2     23    -1 -2
8    3     12    -1 -2
9    4      1       -1
10   4      2       -1
11   4      3       -1
12   4      5    -1 -2
13   5      2    -1 -2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...