python - For 循环不保存在 Pandas Dataframe 中所做的更改
问题描述
我有两个 excel 文件file1.xlsx和file2.xlsx。file1中的数据是手动输入的数据(只有数字数据),而file2中的数据是经过处理的数据。完成的处理是删除字符串和删除空格,以转换为数字。例如,“ 2.123 456 ab ”被转换为“ 2.123456 ”。这里“ ab ”被删除,“ whitespaces ”也被删除。
现在,我正在使用“ for index, row in df.iterrows(): ”迭代数据帧,并基于一些“ if-conditions ”,在 for 中使用row["column2"]=0对数据帧进行一些更改-环形。
file1 数据帧中所做的更改发生在 for 循环之外,但对于 file2,for 循环中所做的更改不会反映在 for 循环之外。
用于删除空格的代码:
df["column1"]= df["column1"].apply(lambda x: re.sub(r'(\d)\s+(\d)' , r'\1', x))
或者
df["column1"]= df["column1"].apply(lambda x: re.sub(r'(\d)\s+(\d)' , r'\1\2', x))
用于删除字符串的代码:
df["column1"] = df["column1"].replace({"ab":""}, regex =True).astype(float)
是否有任何与字符串相关的内容,因为这些更新未反映在 file2 中?
有人可以帮忙吗
提前谢谢
Code:
import pandas as pd
import re
file = "file2.xlsx"
df = pd.read_excel(file)
df["column2"]=1
df["column1"] = df["column1"].apply(lambda x: re.sub(r'(\d)\s+(\d)', r'\1', x))
df["column1"] = df["column1"].replace({"ab":""}, regex=True).astype(float)
for index, row in df.iterrows():
if(row["column1"]==100):
row["column2"]=0
print(df)
df.to_excel("output.xlsx", index =False)
解决方案
推荐阅读
- python - 使用 Keras 进行 OR-Lambda-Layer 操作
- android - OpenStream 在 AsyncTask 中抛出 IOException
- azure - 使用集成运行时执行 Azure 数据工厂 (SSIS) 引发“意外终止”
- mysql - RethinkDb 查询两个日期列之间的当前日期时间
- cqrs - Axon - DefaultMongoTemplate 类型已弃用
- django - Django多文件上传不会将文件发送到目录
- git - 如何在不指定项目名称的情况下指定目标目录的 git clone?
- javascript - 为什么在混合图表上添加时间单位将第一个柱推向左?
- javascript - TypeError:预期的类似字节的对象,而不是 str
- oracle - 我应该在测试盒上授予开发人员什么确切权限