熊猫groupby.sum()无法正常工作?

托马斯·格林

我在一个名为PredictIt的网站上赌博。我已经下载了我曾赌博过的所有市场的所有损益的csv文件。我称其为dat。

csv包含每笔交易的盈亏数据('ProfitLoss'),以及我交易的市场名称('MarketName')。在将财务数据转换为浮动数据之后(必须删除$,并且必须删除()的负数),我尝试使用groupby来获取每个市场而不是每个交易的盈亏。但是market_groups文件不包含损益栏。它添加了其他数值列,但未添加我修改过的列。

for index, row in dat.iterrows():
    if dat['ProfitLoss'][index][0] == '(':
        length = len(dat['ProfitLoss'][index])
        dat['ProfitLoss'][index] = float(dat['ProfitLoss'][index][2:length-1]) * -1
    else:
        length = len(dat['ProfitLoss'][index])
        dat['ProfitLoss'][index] = float(dat['ProfitLoss'][index][1:length-1])
    print(type(dat['ProfitLoss'][index]))

market_groups = dat.groupby(['MarketName']).sum()
钟美玲

问题是dtype从原始数据(即字符串)推断“ ProfitLoss”系列的。您需要将Series设置为float或numeric_only=False在中设置sum()

即,更改dtype“ ProfitLoss”的

dat = dat.astype({'ProfitLoss': 'float'})
market_groups = dat.groupby(['MarketName']).sum()

或将numeric_only设置为 False

market_groups = dat.groupby(['MarketName']).sum(numeric_only= False)

应该管用。

还想指出-1in中dat['ProfitLoss'][index] = float(dat['ProfitLoss'][index][1:length-1])可能不应该存在?我认为您的意思是删除结尾的括号,)但是您无需在else子句中这样做。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章