我需要有关清洁数据框的帮助。 数据框如下:
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是带有推文数量的额外列。
我已经问过类似的问题,但是现在问题有所不同。 链接在这里。 How can I create a multiindex data frame with the following 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
如何获得带有推文数量的附加列?
答案 0 :(得分:0)
set_index
是您要寻找的东西:Documents
df.set_index(['Gap','Date'])
没有注意到问题的另一部分。
这是tweets数列:
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.
逻辑有点儿绕圈,可能不是解决此问题的最佳方法。
但是该逻辑可用于获取列的任意组合。