Python, как объединить в объединенную структуру данных? - PullRequest
0 голосов
/ 16 февраля 2019

Вот мой код на данный момент:

d = {}
for stage in ['doggo', 'floofer', 'puppo', 'pupper']:
    #d[stage] =df.groupby([stage]).agg({'retweet_count': 'sum'})
    d[stage] = df.groupby(stage)['retweet_count'].sum()
stage_retweets = pd.DataFrame.from_dict(d)

Он производит это:

         doggo      floofer     puppo       pupper
None    1387471.0   1517639.0   1472697.0   1444766.0
doggo   159188.0    NaN         NaN         NaN
floofer NaN         29020.0     NaN         NaN
puppo   NaN         NaN         73962.0     NaN
pupper  NaN         NaN         NaN         101893.0

То, что я действительно хотел бы произвести это:

         doggo      floofer     puppo       pupper
None    1387471.0   1517639.0   1472697.0   1444766.0
stage   159188.0    29020.0     73962.0     101893.0     

Кто-нибудь знает, как этого добиться?

1 Ответ

0 голосов
/ 16 февраля 2019
d = {}
# 1 - Put your stages in a list variable
stages = ['doggo', 'floofer', 'puppo', 'pupper']

for stage in stages:
    d[stage] = df.groupby(stage)['retweet_count'].sum()
stage_retweets = pd.DataFrame.from_dict(d)
print(stage_retweets)

# 2 - Create a column conditionnaly to detect if the index in stages list or not
# !! important !! make shure you have only one index level otherwise stage_retweets.index.isin(stages) won't work
stage_retweets['is_stage'] = np.where(stage_retweets.index.isin(stages), 'Stage', 'None')
print(stage_retweets)

# 3 - Groupby this new column
stage_retweets = stage_retweets.groupby('is_stage').sum().reset_index()
print(stage_retweets)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...