更改python pandas数据框的部分行,其中.loc已找到匹配lambda条件的行

问题描述

我写了一个条件,该条件在熊猫数据框中定位一行。它将整个数据行写到报告窗口。找到它之后,我想说的是“对于您已找到的行,将特定列中的值从“ REMOVED”更改为“ MATCHED”,而不是仅将该行打印到窗口中。本质上,我想说的是,如果您发现一行并且状态为“已删除”(在此示例中为四个),则更改df ['STATUS'] ==“ MATCHED”。

我不知道如何将其应用于我的lambda方程。这是我想念的简单事情吗?是否最好将其包含在my_match_function()中或在我遍历不断变化的搜索参数时调用函数时?我们将不胜感激地收到有关如何处理的任何建议。

import pandas as pd


### Specify Depth Tolerance for Matching
tolerance = 0.5


### Create original and comparison dataframes
df_merged = pd.read_csv('merged_example.csv')


### Define Functions Looking For Rows that Match Given Rules
### Matching from depth with tolerance and status
def my_match_function():  
    print(df_merged.loc[lambda df_merged: (df_merged['from_x'] >= (cur_from_min)) & (df_merged['from_x'] <= (cur_from_max)) & (df_merged['STATUS'] == "REMOVED")])


### Function to check to see if a line is flagged as 'added'
def my_check_status_function():
    df_added=(df_merged.loc[lambda df_merged: (df_merged['STATUS'] == "ADDED")])
    df_added.to_csv('added_only.csv')


### Create a dataframe of only 'added' holes and write to CSV
### Read into a new dataframe,then define current variables for search by iteration through lists from the columns
my_check_status_function()
df_added = pd.read_csv('added_only.csv')
df_added_len = (len(df_added))


i = 0
while i < df_added_len:

    cur_dhid = df_added['dhid_y'].iloc[i]
    cur_bound = df_added['bound_y'].iloc[i]
    cur_from_min = df_added['from_y'].iloc[i] - tolerance
    cur_from_max = df_added['from_y'].iloc[i] + tolerance

    my_match_function()
    
    i = i + 1

    
print('loop completed')

format of the original dataframe output of the existing script

我试图将其放入循环中,以使所定位的行的状态更改为“ MATCHED”而没有成功。希望可以通过更改STATUS当前为“已删除”的那些已定位行将STATUS更改为“ MATCHED”来完善这一点。完成该操作后,我可以对那些标记为“添加”的样本进行一些调整。

i = 0
while i < df_added_len:

    cur_dhid = df_added['dhid_y'].iloc[i]
    cur_bound = df_added['bound_y'].iloc[i]
    cur_from_min = df_added['from_y'].iloc[i] - tolerance
    cur_from_max = df_added['from_y'].iloc[i] + tolerance

    my_match_function()
    df_merged['STATUS'] == "MATCHED"
    
    i = i + 1

    
print('loop completed')

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)