Блок данных Python Pandas: как группировать значения из разных столбцов - PullRequest
0 голосов
/ 05 мая 2019

Мне нужна помощь с очисткой моего информационного кадра.Фрейм данных выглядит следующим образом:

         Gap      Date          Time      Full text   Retweets   Likes
0   3.160003  2018-05-21    03:30:56  @georgechang..  19         462
1   3.160003  2018-05-21    21:15:03  @reveal         141        1610
2   3.160003  2018-05-21    11:25:21  RT @nova_road:  2030       0
3   3.160003  2018-05-21    07:10:01  @MrsYomaddy     48         917
4   3.160003  2018-05-21    07:06:54  @Dani21 @dmatki 40         5367

Как вы можете заметить, для всех строк значение Gap равно значению Date.

Я хотел бы получить следующий фрейм данных:

                         num    Time      Full text    Retweets   Likes
    Gap       Date         
0   3.160003  2018-05-21    1     03:30:56  .....        19      462
1                           2     21:15:03  .....        141     1610
2                           3     11:25:21  .....        2030    0 
3                           4     07:10:01  .....        48      917
4                           5     07:06:54  .....        40      5367

где num - дополнительный столбец с количеством твитов.

Я уже задавал похожий вопрос, но теперь проблема немного в другом.Вот ссылка. Как создать мультииндексный фрейм данных со следующими наборами данных? a-multiindex-data-frame-with-the-follow-datasets

Я попытался сделать следующий код:

StockbyTweets.set_index(['Date','Gap','Time'],inplace=True)
StockbyTweets

но я получил только это:

                           Time       Full text    Retweets   Likes
    Gap       Date         
0   3.160003  2018-05-21    03:30:56  .....        19        462
1                           21:15:03  .....        141       1610
2                           11:25:21  .....        2030      0 
3                           07:10:01  .....        48        917
4                           07:06:54  .....        40        5367

Как мне получить дополнительный столбец с номером твита?

1 Ответ

0 голосов
/ 05 мая 2019

set_index - это то, что вы ищете: Документы

df.set_index(['Gap','Date'])

Не заметил другую часть вопроса.

Вот столбец количества твитов:

level_name = df.index.get_level_values(0).tolist()
level_name = [str(i).split(' ')[0] for i in level_name]
level_name = list(set(level_name))

num_of_tweets = {}
for i in level_name:
    df1 = df.loc[i]
    num_of_tweets[i] = len(df1)

df.reset_index(inplace=True)
df['num_of_tweets'] = 0
for key in num_of_tweets.keys():

    df.loc[df['Gap'] == key,'num_of_tweets'] = num_of_tweets[key]

# set the index again.

Логика немного округлена и, вероятно, не лучший способ сделать это.

Однако логику можно использовать для получения любой комбинации столбцов.

...