如何使用python在循环中处理脚本

如何使用python在循环中处理脚本,python,pandas,Python,Pandas,我想在for循环下执行脚本,最后我想使用python将back和concat追加到dataframe。循环中的脚本正在执行,但最后它给出了错误 当我使用以下脚本时,会出现错误: 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) TypeE

我想在for循环下执行脚本,最后我想使用python将back和concat追加到dataframe。循环中的脚本正在执行,但最后它给出了错误

当我使用以下脚本时,会出现错误:

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] = ...

您必须使用
索引
变量逐个索引更改数据帧,因为当前您不是在更改数据帧,而是在更改临时
文件
变量

使用

因此,您可以更改数据帧,而不是
文件['Joining_Date'][index]=…

df['Joining_Date'].iloc[index] = pd.to_datetime(file['Joining_Date'], errors='coerce')
之后,只需删除
apply()
,并保留最后一行


我建议您阅读熊猫版。

为什么在
df..iterrows中有两个
?df=df.apply(file,axis=1)
的任务是什么<代码>文件需要是一个函数(请参阅)。请错误地忽略该函数。已经编写。@Manz您仍然可以编辑它。@ConfusedLearner-我如何在函数内部使用。
df['column_name'].iloc[index] = ...
df['Joining_Date'].iloc[index] = pd.to_datetime(file['Joining_Date'], errors='coerce')