我有这个熊猫数据框df:
Exchange Dir Price Total
BTCAlpha 1 7'259.73 -87.428904
BTCAlpha 1 7'259.71 -0.174233
BTCAlpha 1 7'264.84 -184.374273
BTCAlpha 2 7'264.78 673.001954
BTCBeta1 2 7'264.80 35.321462
我按交易所分组,并且总计为:
g = df.groupby('Exchange')
series = g.apply(lambda x: x[x['Dir'] == 2]['Total'].sum())
我检查该系列是否确实具有以下内容:
isinstance(series,pd.Series)
并返回True
到目前为止一切顺利。然后,我想使用以下方法将该系列转换为Pandas数据框:
df2 = series.to_frame
但是df2不会变成数据帧,不确定它会变成什么:
isinstance(df2,pd.DataFrame)
返回错误
isinstance(df2,pd.Series)
也返回False。
df2返回:
<bound method Series.to_frame of Exchange
BTCAlpha 1.974598e+08
BitBay 6.216426e+05
... ...
我无法对df2进行排序,它似乎不是数据帧。
答案 0 :(得分:2)
您需要按以下方式调用方法
df2 = series.to_frame()
您缺少括号
答案 1 :(得分:0)
不要介意实际上不调用该方法(如M_S_N所指出的那样)-是否有任何原因导致您无法创建聚合DF,然后执行此操作,例如:
agg = df.groupby(['Dir', 'Exchange'])['Total'].sum()
那将给你:
Dir Exchange
1 BTCAlpha -271.977410
2 BTCAlpha 673.001954
BTCBeta1 35.321462
然后执行agg.loc[2]
将为您提供一系列由Dir == 2
索引的值(对于Exchange
):
Exchange
BTCAlpha 673.001954
BTCBeta1 35.321462
如果您希望该Dir
跨交易所的总和,则再次.sum()
,例如:
agg.loc[2].sum()
# 708.323416