Как объединить 2 строки в 1 строку в пандах на основе столбца (объект) - PullRequest
0 голосов
/ 14 мая 2018

Вот моя информация о фрейме данных:

df.info()

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 6 entries, 0 to 5
Data columns (total 4 columns):
A_mean          6 non-null float64
time_range      6 non-null object
time_range_1    6 non-null object
B               6 non-null object
dtypes: float64(1), object(3)

Вот это df:

df

index    A_mean    time_range    time_range_1    B
0       5.936667       07       08:00 - 08:59   1001
1       5.103241       08       08:00 - 08:59   1001
2       5.267687       09       09:00 - 09:59   1001

Я пытался объединить эти две строки:

index    A_mean    time_range    time_range_1    B
0       5.936667       07       08:00 - 08:59   1001
1       5.103241       08       08:00 - 08:59   1001

В одной строке желаемый результат должен быть таким, как показано ниже:

index    A_mean    time_range    time_range_1    B
0       5.519954       08       08:00 - 08:59   1001

** P / S: наиболее важными столбцами будут A_mean & time_range_1, а столбец B должен оставаться неизменным.

Я попробовал .groupby, но у меня есть ошибка:

df2 = df.groupby('time_range_1')['A_mean'].apply(' '.join).reset_index()

TypeError: sequence item 0: expected str instance, numpy.float64 found

Любое решение будет оценено, но "питоническим" способом (панды).Большое спасибо!

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

Попробуйте другой способ решения, но не в 1 коде:

df2= df.groupby(df.time_range_1).mean().reset_index()
df2['B'] = '1001'

Output:
index    time_range_1    A_mean      B
0       08:00 - 08:59   5.519954    1001
1       09:00 - 09:59   5.267687    1001
0 голосов
/ 14 мая 2018

Вы можете использовать:

df.groupby(['time_range_1', 'B'], as_index=False).agg({'A_mean': 'mean', 'time_range':'last'})

Результат:

    time_range_1     B    A_mean  time_range
0  08:00 - 08:59  1001  5.519954           8
1  09:00 - 09:59  1001  5.267687           9
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...