python - 如何使用python在循环中处理脚本
问题描述
我想在for循环下执行脚本,最后想使用python追加并连接到数据框。循环内的脚本正在执行,但最后它给出了错误。
当我使用下面的脚本时,它给出了错误:
df = df.apply(test, axis=1)
Error: AttributeError: '2021-01-19' is not a valid function for 'Series' object
使用另一行给出错误:
df = df.apply(row, inplace=True)
TypeError: 'Series' object is not callable
完整代码:
df = pd.read_excel(open(r'data.xlsx', 'rb'), sheet_name='sheet1')
df1 = df.loc[df['flag'] != 'Not feasible']
df = df.loc[df['flag'] == 'Not feasible'].copy()
for index, file in df..iterrows():
# Run your cleaning codes
try:
file['Joining_Date'][index] = pd.to_datetime(file['Joining_Date'], errors='coerce')
file['Joining_Date'][index] = file['Joining_Date'].dt.strftime('%Y-%m-%d')
except ValueError:
file['status'] = ValueError
try:
file['age'][index] = file['age'].replace('[^\d.]', '', regex=True).astype(float)
except ValueError:
file['status'] = ValueError
try:
file[['col4','col5']][index] = file[['col4','col5']].apply(lambda x: x.astype(str).str.replace('\W',''))
except ValueError:
file['status'] = ValueError
try:
file['Contact'][index] = file['Contact'].replace('[^\d.]', '', regex=True).astype(float)
except ValueError:
file['status'] = ValueError
file['flag'][index] = "feasible"
##Appending the values to dataframe and concat with the Non Executed data
df = df.apply(file, axis=1)
df = pd.concat([df, df1]).sort_index()
请建议。如何在循环下执行数据并在写回Excel之前与未处理的数据组合。
解决方案
而不是使用
file['Joining_Date'][index] = ...
或者
file['Contact'][index] = file['Contact'].replace('[^\d.]', '', regex=True).astype(float)
您必须使用index
变量按索引更改数据框,因为目前您没有更改数据框,而是临时file
变量。
利用
df['column_name'].iloc[index] = ...
所以不是file['Joining_Date'][index] = ...
你改变数据框
df['Joining_Date'].iloc[index] = pd.to_datetime(file['Joining_Date'], errors='coerce')
之后只需删除apply()
并保留最后一行。
我建议阅读 pandas 的用户指南。
推荐阅读
- python - django.db.utils.IntegrityError:表“Event_event”中主键为“1”的行具有无效的外键:
- android - java.lang.reflect.InvocationTargetException 在实现 Room Android 时
- c++ - C++ 标准库是如何在幕后工作的?
- mysql - 检索随机 id_post sql
- python-3.x - findContours() 函数未返回适当数量的轮廓
- java - 如何将 DTO 转换为实体 oneToMany 关系?
- java - Netbeans 中的 JUnit 5 测试
- php - 一般错误:1 没有这样的表:Laravel 单元测试中的用户
- r - pairwise.wilcox.test 如何绘制结果?
- javascript - TypeError:null 不是对象(评估 LoginManager.logInWithPermissions)