python - 使用 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
解决方案
对于输出,试试这个:
ff=open("OUT.CSV","w")
print(df,file=ff)
ff.close()
但是,我认为您请求的输出格式并不是真正的 csv。
推荐阅读
- json - 将一些对象列转换为json字符串
- react-beautiful-dnd - 如何显示拖动项目的当前位置
- kubernetes - Kubernetes pod 命令和参数
- python - 退出 RIDE 应用程序后,RIDE 将不再打开,因为 python 退出工作
- flutter - RangeError(索引):无效值:有效值范围为空:List Map中的0
- google-cloud-platform - 允许未经身份验证的参数不起作用
- laravel - 在 node_modules 文件夹中找不到模块(但文件存在)
- html - Bootstrap 中的数据属性
- javascript - 验证用户是否是 firebase 中电子邮件地址的所有者
- sql-server - 订机票的SQL流程