0

我正在尝试编写一个简短的程序,该程序允许我从其他文件中减去一个文件(文件 A.dat)中的值**(B0.dat,B1.dat,B2.dat .....)我想要制作一个程序,该程序将重复减去 A 文件值的过程,该过程与我拥有的 Bfile 值一样多(3、7 或 81)。所有文件都有相同的数量列。文件 A 有一行,文件 B 有 2 行 + co 我想最好的解决方案是做一个循环,但我有错误。最后,我想将每个更正的文件另存为 B0sub、B1sub、B2sub .....

file A. dat 

A   B   C   D
-1  2   2.5 4


file B0.dat         
A   B   C   D
7   8   9   10
5   3   13  11

file B1.dat 
A   B   C   D
11  12  13  14
3   4   7   8

file B2.dat 
A   B   C   D
6   8.5 5.3 1
0.8 4.2 2   9

I have totally no idea how to do it so far I tried this 


import os
filepath = 'location of files'


i = 0   
filename = f'B{i}.dat'    
file = pd.read_csv(filepath, delimiter='\t', decimal=',', header=0)
## adding 'sub' to the file 
for file in files 
    os.rename(os.path.join(directory,file), os.path.join, file + 'sub' + '.dat')
    

# next file 
 i += 1
filename = f'B{i}.dat'`````
4

1 回答 1

0
  1. 如果您有分隔数据,请使用 CSV
  2. 在您未来的问题中,请提供一种简单的方法让我们重新创建您拥有的数据(就像我在回答中所做的那样)
  3. 只需用于B = B - A.loc[0]将一行减去整个数据帧

创建一些示例数据的代码:

import pandas as pd
import glob

# Create sample data
data_A = pd.DataFrame(data={"A": [-1], "B": [2]})

data_A.to_csv("A.csv", index=False)

data_B0 = pd.DataFrame(data={"A": [7, 5], "B": [8, 3]})
data_B1 = pd.DataFrame(data={"A": [11, 3], "B": [12, 4]})
data_B0.to_csv("B0.csv", index=False)
data_B1.to_csv("B1.csv", index=False)

读取数据并减去 A = pd.read_csv("A.csv") 的代码

for f in glob.glob("B*.csv"):
    B = pd.read_csv(f)
    B = B - A.loc[0]
    print(B)
    B.to_csv("sub_" + f, index=False)

显示:

# For B0:
   A  B
0  8  6
1  6  1

# For B1:
    A   B
0  12  10
1   4   2
于 2021-11-10T10:20:19.800 回答