我有以下数据框:
time city
2018-05-8 sydney
2018-05-8 sydney
2018-05-8 melbourne
2018-05-9 sydney
2018-05-9 melbourne
我想获得以下内容:
time syndey_count melbourne_count
2018-05-8 2 1
2018-05-9 1 1
到目前为止,我已经成功分组,然后按城市汇总:
df.groupby('time').agg({'city': 'count'})
但这只是给了我:
time city
2018-05-8 3
2018-05-9 2
答案 0 :(得分:3)
您可以使用:
#define model
model = Sequential()
model.add(LSTM(100, input_shape=(n_timesteps_in, n_features)))
model.add(RepeatVector(n_timesteps_in))
model.add(LSTM(100, return_sequences=True))
model.add(TimeDistributed(Dense(n_features, activation='tanh')))
model.compile(loss='mse', optimizer='adam', metrics=['mae'])
history=model.fit(train, train, epochs=epochs, verbose=2, shuffle=False)
答案 1 :(得分:1)
另一种解决方案
df.groupby(['time', 'city']).size().unstack().add_suffix('_count')
答案 2 :(得分:1)
只需crosstab
pd.crosstab(df.time,df.city)
Out[77]:
city melbourne sydney
time
2018-05-8 1 2
2018-05-9 1 1