объединение строк в одну строку в pandas на основе отметки времени - PullRequest
0 голосов
/ 16 марта 2020

У меня есть pandas фрейм данных, который выглядит как

Time       C1    C2
08:00:20   5     nan
08:00:40   nan   6
08:05:12   10    nan
08:05:32   nan   14  

Я хочу объединить строки, тесно связанные по времени, с одной строкой и удалить нули из моего фрейма данных, что-то вроде этого

Time    C1    C2
08:00   5     6
08:05   10    14

Может кто-нибудь помочь мне с тем, как объединить строки, чтобы получить такие выходные данные

Ответы [ 2 ]

0 голосов
/ 16 марта 2020

Использование bfill и drop_duplicates:

df['Time'] = pd.to_datetime(df['Time']).dt.strftime('%H:%M')
df[['C1', 'C2']] = df.groupby('Time').bfill()
df.drop_duplicates('Time')

    Time    C1    C2
0  08:00   5.0   6.0
2  08:05  10.0  14.0
0 голосов
/ 16 марта 2020

Если Time - строка, используйте индексацию по первым 5 значениям и передайте GroupBy.first:

df1 = df.groupby(df.pop('Time').str[:5]).first().reset_index()
print (df1)
    Time    C1    C2
0  08:00   5.0   6.0
1  08:05  10.0  14.0

Если datetime в столбце, используйте Series.dt.strftime :

df['Time'] = pd.to_datetime(df['Time'])
df1 = df.groupby(df.pop('Time').dt.strftime('%H:%M')).first().reset_index()
print (df1)
    Time    C1    C2
0  08:00   5.0   6.0
1  08:05  10.0  14.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...