объединить столбцы из объединенных баз данных - PullRequest
2 голосов
/ 19 января 2020

Я хочу добавить 2 столбца одного фрейма данных. Кадр данных является результатом двух отдельных кадров данных. Код следующий

df1 = pd.read_csv("acc.csv")
df2 = pd.read_csv("gyr.csv")

df = pd.merge(df1, df2, right_index=True, left_index=True)

, поэтому у меня есть столбцы id, активность, время, accx, accy, accz, id, activity_gur, время, gurx, gury, gurz data.head

df["acc_activity"].value_counts()
sitting          32833
standing         31924
lying            31229
running          30429
climbing_up      26938
walking          26080
climbing_down    25281
jumping           4232
Name: activity, dtype: int64

df["gur_activity"].value_counts()

sitting          33267
standing         32546
walking          31912
lying            31822
running          30958
climbing_down    25786
climbing_up      18343
jumping           4312
Name: activity_gur, dtype: int64

, поэтому я хочу добавить новый столбец к существующим (SEE DATA.HEAD), который представляет собой сумму активность_гур и активность. Таким образом, справа от заголовка данных будет добавлен новый столбец с названием деятельности. В этой колонке будет, например, активность спускания вниз 25281 + 25786 = 51067. поэтому в строке 0 столбца действий будет отображаться активность, спускающаяся вниз на столько строк, сколько потребуется. И то же самое для других видов деятельности. Когда я кодирую df ["activity"]. Value_counts (), он возвращает мне что-то вроде выше. после этого я пропущу столбцы Activity_gur и Activity

Я пробовал что-то вроде следующего:

df1 = pd.DataFrame({'activity': 32833, 31924, 31793, 31229, 30429, 26938, 25281, 4232],
                       'activity_gur': [33267, 32546, 31912, 31822, 30958, 25786, 18343, 4312]})

df['activityfinal']=df1.activity + df1.activity_gur

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

Вы можете мне помочь здесь?

Ответы [ 3 ]

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

Тестовые данные:

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'activity' : np.random.choice( ['sitting', 'standing', 'lying', 'running', 'climbing_up', 'walking', 'climbing_down', 'jumping'], 10000),
    'activity_gur' : np.random.choice( ['sitting', 'standing', 'lying', 'running', 'climbing_up', 'walking', 'climbing_down', 'jumping'], 10000)})

Первый объект value_counts:

activity_value_counts = df["activity"].value_counts().sort_index()
activity_value_counts

Out:

climbing_down    1222
climbing_up      1248
jumping          1274
lying            1193
running          1277
sitting          1283
standing         1227
walking          1276
Name: activity, dtype: int64

Второй объект value_counts:

activity_gur_value_counts = df["activity_gur"].value_counts().sort_index()
activity_gur_value_counts

Out:

climbing_down    1238
climbing_up      1274
jumping          1236
lying            1262
running          1220
sitting          1259
standing         1247
walking          1264
Name: activity_gur, dtype: int64

Конечный фрейм данных:

df_final = pd.DataFrame({'activity':activity_value_counts})
df_final['activity_gur'] = activity_gur_value_counts
df_final['sum'] = df_final['activity'] + df_final['activity_gur']
df_final

Out: enter image description here

Затем вы можете удалить activity и activity_gur столбцы и переименуйте sum столбец, если необходимо.

0 голосов
/ 19 января 2020

Попробуйте это

X = df["activity"].value_counts()
Y = df["activity_gur"].value_counts()
RESULT = pd.DataFrame(X + Y, columns=['TOTAL'])

Затем, чтобы обновить существующий фрейм данных:

df["TOTAL"] = df["activity"].apply(lambda x: RESULT["TOTAL"].loc[x])

После вышеуказанного шага удалите столбцы:

df = df.drop(["activity", "activity_gur"], axis=1)
0 голосов
/ 19 января 2020

Использовать Pandas присоединиться ,

Как это,

new_data = activity.append(activity_gur, ignore_index=True)
...