首页 > 解决方案 > 使用 pandas 的多级索引和计算

问题描述

我有一个输入文件包含文本:

 case a1 b1.txt  c1.txt
 case a2 b2.txt  c2.txt
 case a3 b3.txt  c3.txt

其中 b1.tx,c1.txt,b2.txt,c2.txt,b3.txt, c3.txt 是用于读取内容的文本文件,而 casea1,a2,a3 是案例。

案例存储在一个数组中。

我正在阅读txt文件:

bfile=[]
cfile=[]
f1= open(inp.txt,'r')
for line in f1:
    cases.append(line.split()[0])
    bfile.append(line.split()[1])
    cfile.append(line.split()[2])

每个文件都包含 RED、GREEN BLUE 字符串和相应的值。我从相应的文件中获取这些值并附加到数组:对于 b 文件,我附加到 b_red、b_green、b_blue。对于 c 文件,附加到 c_red、c_green、c_blue。

我已经尝试了相应的代码:

b_red=[]
b_green=[]      
b_blue=[]
c_red=[]
c_green=[]  
c_blue=[]
for i in bfile:
f2=open(i,'r')
for line in f2.readlines():
    string=line
    if re.search(r'\bRED', string):
        redValue=float(string.split()[4])
        b_red.append(redValue)
        ---
        ---
for j in cfile:
f3= open(j, 'r')
for line in f3.readlines():
    string = line
    if re.search(r'\bRED', string):
        c_redValue=float(string.split()[4])
        c_red.append(c_redValue)
        ----

因此 b_red=[120.0,10.0,100.0],c_red[120.0,9.0,20.0],同样的值存储在数组 b_green、c_green、b_blue、c_blue 中。

我试图将 csv 输出为:

df1=pd.DataFrame({'RED':b_red,'GREEN':b_green,'BLUE':b_blue })
df1.to_csv("OUT.CSV")
df2=pd.DataFrame({'RED':c_red,'GREEN':c_green,'BLUE':c_blue })
df2.to_csv("OUT.CSV")
df=df1-df2
df.to_csv("OUT.CSV")

其实我想要这个:

             RED         GREEN       BLUE
a1  B       120.0         14.0        12.0
    C       120.0         17.0        14.0
    diff    0             -3          -2

a2  B       10.0          3.0         1.2   
    C       9.0           3.0         0.2
    diff    1.0           0           1.0

a3  B       100.0        15.0         10.0
    C       80.0         18.0         5.0
    diff    20.0         -3.0         5.0

标签: pythonpython-3.xpandaspython-2.7export-to-csv

解决方案


对于输出,试试这个:

ff=open("OUT.CSV","w")
print(df,file=ff)
ff.close()

但是,我认为您请求的输出格式并不是真正的 csv。


推荐阅读