python - TypeError:不能将序列乘以“str”类型的非整数 [转换数据类型]
问题描述
我试图从数据框中乘以 2 个数据,但它给出了TypeError: can't multiply sequence by non-int of type 'str' when I run the code。我可以知道如何将数据框数据类型从“pandas.core.series.Series”转换为“int”吗?
def generatePortfolioStatement(stock):
df = pd.DataFrame(data = stock[1:],columns = stock[0])
local_df = df
sum_mp = str(100) + "%"
local_df["Total Invested"] = local_df["Qty"] *local_df["BoughtPrice"]
sum_ti = local_df["Total Invested"].sum()
local_df["Invested Portfolio Size"] = ((local_df["Total Invested"] / sum_ti) * 100).round(0).astype(str) + "%"
local_df["Total Market Value"] = local_df["Qty"] * local_df["MarketPrice"]
sum_mv = local_df["Total Market Value"].sum()
local_df["Profit/Loss"] = local_df["Total Market Value"] - local_df["Total Invested"]
sum_pl = local_df["Profit/Loss"].sum()
local_df["Market Portfolio Size"] = ((local_df["Total Market Value"] / sum_mv) * 100).round(0).astype(str) + "%"
sum_row = {"No":" ","Company":" ","Cap":" ","Qty":" ","BoughtPrice":" ","MarketPrice":"Sum","Total Invested":sum_ti,"Invested Portfolio Size":" ","Total Market Value":sum_mv,"Profit/Loss":sum_pl,"Market Portfolio Size":sum_mp}
local_df = local_df.append(sum_row, ignore_index = True)
return local_df
解决方案
local_df["Qty"] = local_df["Qty"].astype(int)
local_df["BoughtPrice"] = local_df["BoughtPrice"].astype(int)
local_df["Total Invested"] = local_df["Total Invested"].astype(int)
local_df["Total Market Value"] = local_df["Total Market Value"].astype(int)
local_df["MarketPrice"] = local_df["MarketPrice"].astype(int)
这会将您的数据列类型从 str 转换为 int
推荐阅读
- javascript - 我可以在嵌套在“方法”中的“v-for”中使用“索引”参数吗?
- sql-server - 整个表在内存中并提交了几个小时
- windows - 在哪里可以找到 Windows 交付优化示例代码和头文件?
- php - PHP替换'?'之后的删除字符串
- oop - 从函数返回的表继承
- sql - SQL 有没有办法在“WITH”语句中使用变量?
- r - 从文本中删除字符串并放入单独的列中
- sql - 如何使用 DB2 函数查找字符串中每个字符的 ASCII?
- mysql - 在 MariaDB v. 10.1.xx 中将 VARCHAR 数据转换为 DATE
- c - 如何避免 sdl2 中的可见刷新