我有两个csv文件,并且已经合并了csv文件并将其导出到Excel工作表中。
现在我可以在现有Excel工作表中添加一个新列,其中新列的结果将是对现有两个列的除法运算。
示例:
col_new=col4/col6
我尝试用csv文件实现,在合并文件后,最终的csv文件将如下所示:
col1,col2,col3
"1,200",14,2
"1,600",13,4
data=pd.read_csv(filename)
for i,l in zip(data['col1'],data['col3']):
sah=i.replace(',','')
sah1=int(float(sah))
print sah1
print type(sah1)
data['res']=sah1/l
print data
预期:
col1 col2 col3 res
---------------------------
1,200 14 2 600
1,600 13 4 400
答案 0 :(得分:0)
您可以使用str.replace(',','')
将第一列转换为整数,然后使用pd.to_numeric()
立即重铸整个系列。现在,您已经拥有了两个感兴趣的整数列,只需使用将一个序列除以另一序列并将其存储在res
中的功能即可。从那里,您可以将其导出到csv或excel文件中。
# set up the DataFrame to match your input
df = pd.DataFrame([["1,200", 14, 2],["1,600", 13, 4]], columns=['col1','col2','col3'])
print(df)
# col1 col2 col3
# 0 1,200 14 2
# 1 1,600 13 4
df['res'] = pd.to_numeric(df.col1.str.replace(',','')) / df.col3
print(df)
# col1 col2 col3 res
# 0 1,200 14 2 600.0
# 1 1,600 13 4 400.0
我在您的代码中看到的部分问题是,data['res']=sah1/l
说data['res']
是一个标量。因此,它将使用该奇异值填充整个列,而不是逐行评估。每次迭代都会执行此操作,这就是为什么每次打印时都看到res
列的原因。