首页 > 解决方案 > 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

标签: python

解决方案


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


推荐阅读