首页 > 解决方案 > For 循环不保存在 Pandas Dataframe 中所做的更改

问题描述

我有两个 excel 文件file1.xlsxfile2.xlsxfile1中的数据是手动输入的数据(只有数字数据),而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)

标签: pythonpython-3.xregexpandasdataframe

解决方案


推荐阅读