TypeError:不能将序列乘以“str”类型的非整数 - 将两列相乘后
Posted
技术标签:
【中文标题】TypeError:不能将序列乘以“str”类型的非整数 - 将两列相乘后【英文标题】:TypeError: can't multiply sequence by non-int of type 'str' - after multiplying two columns 【发布时间】:2021-08-07 19:56:01 【问题描述】:我是 Python 新手,我想了解为什么会出现此错误
我试图将结果放入一个新列(称为总和)中:“订购数量”乘以“每个价格”。
我收到错误:TypeError: can't multiply sequence by non-int of type 'str' 我不明白为什么,你知道为什么吗?
我做了以下事情:
import pandas as pd
files = ["Sales_January_2019.csv",
"Sales_February_2019.csv",
"Sales_March_2019.csv",
"Sales_April_2019.csv",
"Sales_May_2019.csv",
"Sales_June_2019.csv",
"Sales_July_2019.csv",
"Sales_August_2019.csv",
"Sales_September_2019.csv",
"Sales_October_2019.csv",
"Sales_November_2019.csv",
"Sales_December_2019.csv"]
df = pd.DataFrame()
for name in files:
tmp = pd.read_csv(name, index_col=0)
df = df.append(tmp)
df = df.reset_index()
df = df.drop(['x_t', 'perf'], axis=1)
print(df)
print(df['Order Date'])
df['Month'] = df['Order Date'].str[0:2]
print(df['Month'])
#df['Month'] = pd.to_numeric(df['Month'])
liste_av_mndsnr = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12']
month_filter = (df['Month'].isin(liste_av_mndsnr))
df = df[month_filter]
print(df['Month'])
print(df)
df ['Sum'] = df['Quantity Ordered'] * df['Price Each']
df.head()
print (df)
【问题讨论】:
【参考方案1】:您是否检查了“订购数量”和“每个价格”列类型?这可能是由于列类型“str”所致。
如果是这种情况,你可以像这样转换每一列的类型:
df['Quantity Ordered'] = df['Quantity Ordered'].astype('int')
df['Price Each'] = df['Price Each'].astype('float')
【讨论】:
【参考方案2】:我管理的
df ['Quantity Ordered'] = pd.to_numeric(df['Quantity Ordered'])
df ['Price Each'] = pd.to_numeric(df['Price Each'])
【讨论】:
以上是关于TypeError:不能将序列乘以“str”类型的非整数 - 将两列相乘后的主要内容,如果未能解决你的问题,请参考以下文章
不能在乘法数组和 e-6 中将序列乘以“float”类型的非整数 [重复]
python中的DES加密错误(TypeError:对象类型<class'str'>不能传递给C代码)
PySpark:TypeError:StructType 不能接受类型为 <type 'unicode'> 或 <type 'str'> 的对象