我是新手,所以请多多包涵……
我有一个 .xls 文件,它有 49 行和 5 列,即。 a,b,c,d,e。我想计算 (b^2+c^2+d^2) 的平方根并作为 f 放入新列。在同一个 .xls 文件中。
现在想象我有 49 个这样的文件。
我正在尝试使用 pandas 编写代码,该代码会自动解析文件夹中的每个文件,并使用上述公式在原始文件中添加一列。
我的代码是:
import glob
import pandas as pd
import numpy as np
#size = len(glob.glob('test/*.xls'))
file = glob.glob('test/*.xls')
for f in file:
print(f)
name = 12
df = pd.read_excel(f, header = None)
df.columns = ['a','b', 'c', 'd', 'e','f']
df['Result'] = ((df['b']**2)+(df['c']**2)+(df['d']**2))**(1/2)
df.to_excel(r'test/Nodal pressure at 8 us_at_Y_'+str(name)+'.5.xls', index = False)
name = name + 1
我不知道这是否可能,但任何帮助都会有用。另外,我是编码新手,所以我可能不是一些基本的。
最佳答案
在创建新列的地方尝试以下操作 Filename
在写入数据时读取数据并按文件名分组时写入excel并在写入前删除该列。:
import glob
import pandas as pd
file = glob.glob('test/*.xls')
df = pd.concat([pd.read_excel(f, header=None).assign(Filename=os.path.basename(f)) for f in file])
df.columns = ['a','b', 'c', 'd', 'e','f','Filename']
df['Result'] = ((df['b']**2)+(df['c']**2)+(df['d']**2))**(1/2)
name = 12
for x in df.groupby(['Filename']):
x.drop('Filename', axis=1).to_excel(r'test/Nodal pressure at 8 us_at_Y_'+str(name)+'.5.xls', index=False)
name += 1
关于python - 循环遍历多个 Excel 文件以使用 pandas 修改和重写原始文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62932278/