使用Pandas对现有Excel工作表进行操作

问题描述 投票:0回答:1

我有两个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
python pandas
1个回答
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列相同的原因。

© www.soinside.com 2019 - 2024. All rights reserved.