Каков идеальный способ поворота данных определенного типа c на основе нескольких столбцов таблицы с использованием python pandas? - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть фрейм данных:

id name age consumer_id consumer_name  esc    esc_date
1   A   12    1AQJ        test1        None     NaT
2   B   18    1AQZ        test2        None     NaT
3   C   21    1ZQJ        test3        Yes   2020-04-16

Я хочу манипулировать данными и иметь новые строки везде, где присутствуют значения столбца es c и esc_dates и Not Null, id должен оставаться таким же, как показано ниже :

id name   age   consumer_id   consumer_name  esc    esc_date    
1   A     12      1AQJ          test1        None     NaT        
2   B     18      1AQZ          test2        None     NaT         
3   C     21      1ZQJ          test3        None     NaT      
3  None   None    None           None        Yes   2020-04-16    

1 Ответ

1 голос
/ 16 апреля 2020

Используйте concat с отфильтрованными строками по отсутствующим муравьям и отсутствующим значениям (~), для других пропущенных значений присвойте их DataFrame.assign или отфильтруйте только необходимые столбцы, как df3:

df['esc_date'] = pd.to_datetime(df['esc_date'])

m = df['esc_date'].notna()
df1 = df[~m]
df2 = df[m].assign(esc_date=np.nan, esc=None)
df3 = df.loc[m, ['id','esc','esc_date']]


df = pd.concat([df1, df2, df3], sort=False).sort_index().reset_index(drop=True)
print (df)
   id name   age consumer_id consumer_name   esc   esc_date
0   1    A  12.0        1AQJ         test1  None        NaT
1   2    B  18.0        1AQZ         test2  None        NaT
2   3    C  21.0        1ZQJ         test3  None        NaT
3   3  NaN   NaN         NaN           NaN   Yes 2020-04-16
...