无法将此系列转换为熊猫数据框

时间:2020-01-26 19:24:06

标签: python pandas dataframe

我有这个熊猫数据框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进行排序,它似乎不是数据帧。

2 个答案:

答案 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