gpt4 book ai didi

python - Pandas 如何使用 .loc 根据其他列中的值将列设置为 NaN

转载 作者:行者123 更新时间:2023-12-01 02:03:38 25 4
gpt4 key购买 nike

我有一个 pandas dataframe,我在其中调用一个函数来在不满足条件的列中填充 NaN。

以下是我的代码:

def clean_feedback(DF):
feed_id = DF.id_y.unique()
for ID in feed_id:
Min = np.argmin(np.abs(DF[DF.id_y == ID].created_at_x - DF[DF.id_y == ID].created_at_y))
print(Min)
DF[DF.id_y == ID].loc[DF[DF.id_y == ID].index != Min, 'comments'] = np.nan
return DF[DF.id_y == ID]

示例数据框是:

id_x    user_id merchant_id amount_spent    bill_number created_at_x    checked_in  chain_id    id_y    feedback_setting_id comments    created_at_y    updated_at  feedback_type
1097 268868 975 42 149 None 2016-12-14 12:11:14 1 NaN 219 194 Lovely cafe! 2017-03-22 12:55:05 2017-10-05 06:45:49 1
2150 468876 975 42 278 None 2017-06-04 10:51:47 1 NaN 219 194 Lovely cafe! 2017-03-22 12:55:05 2017-10-05 06:45:49 1
6535 5020 975 42 200 None 2015-03-25 12:37:36 1 NaN 219 194 Lovely cafe! 2017-03-22 12:55:05 2017-10-05 06:45:49 1
9228 476314 975 42 676 None 2017-06-09 14:34:03 1 NaN 219 194 Lovely cafe! 2017-03-22 12:55:05 2017-10-05 06:45:49 1
9601 293308 975 42 438 None 2017-01-22 13:03:18 1 NaN 219 194 Lovely cafe! 2017-03-22 12:55:05 2017-10-05 06:45:49 1
10215 781647 975 42 335 None 2017-08-21 13:36:43 1 NaN 219 194 Lovely cafe! 2017-03-22 12:55:05 2017-10-05 06:45:49 1
20405 5441 975 42 200 None 2015-03-29 14:24:32 1 NaN 219 194 Lovely cafe! 2017-03-22 12:55:05 2017-10-05 06:45:49 1
24117 277853 975 42 220 None 2016-12-25 12:57:53 1 NaN 219 194 Lovely cafe! 2017-03-22 12:55:05 2017-10-05 06:45:49 1
24432 949216 975 42 219 None 2017-10-05 10:22:52 1 NaN 219 194 Lovely cafe! 2017-03-22 12:55:05 2017-10-05 06:45:49 1
24475 289288 975 42 109 None 2017-01-15 08:49:55 1 NaN 219 194 Lovely cafe! 2017-03-22 12:55:05 2017-10-05 06:45:49 1
32318 767980 975 42 293 None 2017-08-16 09:41:30 1 NaN 219 194 Lovely cafe! 2017-03-22 12:55:05 2017-10-05 06:45:49 1
32820 343502 975 42 387 None 2017-03-22 12:52:48 1 NaN 219 194 Lovely cafe! 2017-03-22 12:55:05 2017-10-05 06:45:49 1

每当我调用该函数时:clean_feedback(Transaction[Transaction.id_y == 219]),没有任何变化。我确信这是一个愚蠢的错误,但我完全被难住了。

EDIT1:我也尝试过使用 .where 函数执行 about,但它使整个数据帧为 NaN。有没有办法指定comments列?

最佳答案

试试这个:

DF.loc[(DF.id_y == ID) & (DF.index != Min), 'comments'] = np.nan 

说明

  • pd.DataFrame.loc接受基于标签的 bool 索引。
  • 您想要的 2 个条件是 id_y 等于 IDindex != Min
  • & 运算符组合 2 个 bool 系列以形成单个 bool 索引器

关于python - Pandas 如何使用 .loc 根据其他列中的值将列设置为 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49291768/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com