【问题标题】:Pandas when dividing = TypeError: only integer scalar arrays can be converted to a scalar index除法时的熊猫= TypeError:只能将整数标量数组转换为标量索引
【发布时间】:2021-11-22 09:07:28
【问题描述】:
import yahoo_fin.stock_info as si
import pandas as pd
import numpy as np

x = si.get_balance_sheet('TD')

dfstock = pd.DataFrame(x)
dfstock = dfstock/10000000


dfstock = dfstock.fillna(0)


dfstock['Growth'] = dfstock['2020-10-31'] / dfstock['2017-10-31']

我试图在我的数据框中划分两列以获得第三列。我不断收到此错误 TypeError:只有整数标量数组可以转换为标量索引。我不知道该怎么办,我试图填写空白将 0 但它仍然不起作用。请帮忙。

【问题讨论】:

  • 能否展示您的数据框样本?

标签: python pandas


【解决方案1】:

yahoo_fin 生成一个以 DatetimeIndex 作为列的 DataFrame。出于这个原因,我们需要使用 DateTime 而不是字符串来访问列。一个简单的方法是用pd.to_datetime转换字符串:

dfstock['Growth'] = (
        dfstock[pd.to_datetime('2020-10-31')] /
        dfstock[pd.to_datetime('2017-10-31')]
)

df_stock.head(5):

endDate                 2020-10-31 00:00:00  2019-10-31 00:00:00  2018-10-31 00:00:00  2017-10-31 00:00:00    Growth
Breakdown                                                                                                           
intangibleAssets                      212.5                250.3                245.9                261.8  0.811688
capitalSurplus                         12.1                 15.7                 19.3                 21.4  0.565421
totalLiab                          162036.6             132758.9             125486.3             120380.5  1.346037
totalStockholderEquity               8985.3               8190.7               7405.4               6946.4  1.293519
otherCurrentLiab                     5265.5               4436.1               5728.5               5627.5  0.935673

*注意日期时间列


或者,我们可以使用dateastype 将列转换为字符串。取决于我们希望如何与列交互:

dfstock.columns = dfstock.columns.date.astype(str)
dfstock['Growth'] = dfstock['2020-10-31'] / dfstock['2017-10-31']

df_stock.head(5):

                        2020-10-31  2019-10-31  2018-10-31  2017-10-31    Growth
Breakdown                                                                       
intangibleAssets             212.5       250.3       245.9       261.8  0.811688
capitalSurplus                12.1        15.7        19.3        21.4  0.565421
totalLiab                 162036.6    132758.9    125486.3    120380.5  1.346037
totalStockholderEquity      8985.3      8190.7      7405.4      6946.4  1.293519
otherCurrentLiab            5265.5      4436.1      5728.5      5627.5  0.935673

*注意字符串列名


使用的设置:

import pandas as pd
import yahoo_fin.stock_info as si

dfstock = si.get_balance_sheet('TD').div(10000000).fillna(0)

【讨论】:

  • 谢谢它完美的工作!关于我可以在哪里了解更多信息的任何建议,您会推荐吗?
  • 很高兴我能帮上忙。老实说,我只是回答了很多这类问题,这些问题给我带来了我不会接触到的问题,所以我真的没有任何特别可以指出的资源。
猜你喜欢
  • 2020-04-30
  • 2020-07-23
  • 2019-03-15
  • 2020-04-20
  • 2021-01-17
  • 2020-03-12
  • 2021-02-09
  • 2020-09-19
  • 2019-01-09
相关资源
最近更新 更多