Объединить две строки, если значение равно Панда - PullRequest
1 голос
/ 08 января 2020

У меня есть таблицы, как показано ниже

                   Error Code ID      Error Code              Description of  Error Code
0                                NaN      Value                                     NaN
1                     OE_ATO_IN_OPEN      16169      Order priced ATO cannot be entered
2                                NaN        NaN                when a security is open.
3                      e$dup_request      16198  Duplicate modification or cancellation
4                                NaN        NaN     request for the same trade has been
5                                NaN        NaN                            encountered.
6          TRD_CONT_MOD_NOT_ALLOWED      16231     Continuous session trades 
7       STR_PRO_PARTIVIPANT_INVALID      16233     Proprietary requests cannot be made

Я хочу преобразовать его в

                   Error Code ID     Error Code Value        Description of  Error Code
1                     OE_ATO_IN_OPEN      16169      Order priced ATO cannot be entered               
                                                               when a security is open.
3                      e$dup_request      16198  Duplicate modification or cancellation
                                                    request for the same trade has been
                                                                           encountered.
6          TRD_CONT_MOD_NOT_ALLOWED      16231     Continuous session trades 
7       STR_PRO_PARTIVIPANT_INVALID      16233     Proprietary requests cannot be made

Отсутствующий индекс только для понимания цели.

1 Ответ

1 голос
/ 08 января 2020

Сначала заполнить пропущенные значения вперед на ffill, а затем агрегировать join:

c = ['Error Code ID', 'Error Code']
df[c] = df[c].ffill()
df = df.groupby(c).agg(' '.join).reset_index()

Если хотите удалить строки с пропущенными значениями в столбце Description of Error Code, используйте:

df = df.dropna(subset=['Description of  Error Code'])
c = ['Error Code ID', 'Error Code']
df[c] = df[c].ffill()
df = df.groupby(c).agg(' '.join).reset_index()

print (df)
                 Error Code ID Error Code  \
0               OE_ATO_IN_OPEN      16169   
1  STR_PRO_PARTIVIPANT_INVALID      16233   
2     TRD_CONT_MOD_NOT_ALLOWED      16231   
3                e$dup_request      16198   

                           Description of Error Code  
0  Order priced ATO cannot be entered when a secu...  
1                Proprietary requests cannot be made  
2                          Continuous session trades  
3  Duplicate modification or cancellation request...  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...