Переместить данные из строки в другую строку в группе указанных строк - PullRequest
3 голосов
/ 18 февраля 2020

У меня есть этот набор данных, который я хочу преобразовать, поэтому я просто выбрал фрагмент того, как он выглядит. Таким образом, у нас есть столбец с именем Больница, в котором есть те 4 строки, которые повторяются до конца кадра данных. Я хочу преобразовать так, чтобы все данные могли быть сохранены только в первой строке, которая называется prelim_arm_1, и удалили оставшиеся руки из 3 строк.

import pandas as pd
import numpy as np

# intialise data of lists. 
data = {'Hospital':['prelim_arm_1' , '24_hour_review_arm_1','48_hour_review_arm_1',
                    '72_hour_review_arm_1','discharge_informat_arm_1','prelim_arm_1' , 
                    '24_hour_review_arm_1','48_hour_review_arm_1',
                    '72_hour_review_arm_1','discharge_informat_arm_1'],
        'Bug_Hosp':['133', 'NAN' , 'NAN', 'NAN', 'NAN','133', 'NAN' , 'NAN', 'NAN', 'NAN'], 
        'code':['G45','NAN' ,'NAN','NAN', 'NAN', 'G45','NAN' ,'NAN','NAN', 'NAN'],
        'cont':['T256','NAN' ,'NAN','NAN', 'NAN','T256','NAN' ,'NAN','NAN', 'NAN'],
        'IPC':['NAN','NAN' ,'NAN','567TY', 'NAN','NAN','NAN' ,'NAN','567Tu', 'NAN'],
        'NO_CT':['NAN','NAN' ,'NAN','NAN', '5667','NAN','NAN' ,'NAN','3456', 'NAN'],
        } 

# Create DataFrame 
df_final = pd.DataFrame(data) 

# Print the output. 
print(df_final)


Окончательный набор данных должен выглядеть следующим образом

import pandas as pd
import numpy as np

# intialise data of lists. 
data = {'Hospital':['prelim_arm_1'],
        'Bug_Hosp':['133'], 'code':['G45'],
        'cont':['T256'],
        'IPC':['567TY'],
        'NO_CT':['5667']} 

# Create DataFrame 
df_final = pd.DataFrame(data) 

# Print the output. 
print(df_final)

Набор данных огромен с повторяющимися рядами ветвей, но я хочу, чтобы для каждой группы из 4 строк он должен сохраняйте данные только на prelim_arm_1 и удаляйте остальные 3 ряда строчек . итоговая таблица будет иметь только prelim_arm_1 с данными по группе из 4 рук.

1 Ответ

2 голосов
/ 18 февраля 2020

Если хотите сначала не пропущенные значения для каждых 5 строк, используйте сначала DataFrame.replace, если NAN - строки, иначе пропустите этот шаг и затем используйте groupby с GroupBy.first Создана вспомогательная серия Сравнение столбца Hospital по первому значению prelim_arm_1 и Series.cumsum:

#if necessary
df_final = df_final.replace('NAN',np.nan)

df_final = df_final.groupby(df_final['Hospital'].eq('prelim_arm_1').cumsum()).first()
print(df_final)
              Hospital Bug_Hosp code  cont    IPC NO_CT
Hospital                                               
1         prelim_arm_1      133  G45  T256  567TY  5667
2         prelim_arm_1      133  G45  T256  567Tu  3456

Сведения :

print(df_final['Hospital'].eq('prelim_arm_1').cumsum())
0    1
1    1
2    1
3    1
4    1
5    2
6    2
7    2
8    2
9    2
Name: Hospital, dtype: int32
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...