使用熊猫对现有Excel工作表进行的操作

时间:2019-05-01 13:30:51

标签: python pandas

我有两个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

1 个答案:

答案 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/ldata['res']是一个标量。因此,它将使用该奇异值填充整个列,而不是逐行评估。每次迭代都会执行此操作,这就是为什么每次打印时都看到res列的原因。