Python pandas: объединить фрейм данных в ряд по индексу ряда и столбцу фрейма данных - PullRequest
0 голосов
/ 23 февраля 2020

У меня есть следующие серии:

>>>counts = pd.Series({'0.0':5, '1.0':6, '2.0':14, '3.0':98})
>>>counts
0.0     5
1.0     6
2.0    14
3.0    98
dtype: int64

и фрейм данных:

>>>topic_keywords = [(0, 0.0, 'challenge, web, language, require, bot'),
                     (1, 3.0, 'time, huge, figure, image, run, develop'),
                     (2, 1.0, 'datum, user, access, speech, bandwidth'),
                     (3, 2.0, ' main, decide, audio, sensor, disabled, make'),
                     (4, 2.0, ' main, decide, audio, sensor, disabled, make'),
                     (5, 0.0, 'challenge, web, language, require, bot')]
>>> topicKeywordsDf = pd.DataFrame(topic_keywords, columns=['ID', 'Topic_Num', 'Topic_Keywords'])
>>> topicKeywordsDf = topicKeywordsDf.set_index('ID')
>>> topicKeywordsDf
    Topic_Num                                Topic_Keywords
ID
0         0.0        challenge, web, language, require, bot
1         3.0       time, huge, figure, image, run, develop
2         1.0        datum, user, access, speech, bandwidth
3         2.0   main, decide, audio, sensor, disabled, make
4         2.0   main, decide, audio, sensor, disabled, make
5         0.0        challenge, web, language, require, bot

Я хотел бы объединить фрейм данных в серии, где индекс серии будет соответствовать столбец Topic_Num кадра данных:

Topic_Num    Count    Topic_Keywords
0.0         5        challenge, web, language, require, bot
1.0         14       datum, user, access, speech, bandwidth
2.0         6        main, decide, audio, sensor, disabled, make
3.0         98       time, huge, figure, image, run, develop

Предпочтительно, конечный кадр данных должен быть отсортирован на основе Topic_Num. Как мне объединить их?

Попытки:

counts_df = counts.to_frame()
merge = counts_df.merge(topicKeywordsDf, left_index=True, right_on="Topic_Num")

Но получите эту ошибку:

ValueError: Вы пытаетесь объединить на объекте и столбцах float64. Если вы продолжаете sh, вы должны использовать pd.concat

1 Ответ

1 голос
/ 23 февраля 2020

Вы должны добавить несколько вещей:

Во-первых, ваш countts_df не имеет имени столбца, добавив имя, вы получите Dataframe с именем столбца

counts_df=pd.DataFrame({'Topic_Num':counts.index, 'value':counts.values})

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

merge = counts_df.merge(topicKeywordsDf, left_index=True, right_on="Topic_Num").drop_duplicates()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...