我希望根据数据中的日期更新和替换值,同时删除其他特定列中的数据。
数据
id date location status value1 value2
CC 1/1/2022 ny new 12 1
CC 4/1/2022 ny new 1 1
CC 7/1/2022 ny new 1 1
CC 10/1/2022 ny new 1 2
CC 1/1/2023 ny ok 1 2
CC 4/1/2023 ny ok 1 2
CC 7/1/2023 ny ok 1 3
CC 10/1/2023 ny ok 1 3
BB 1/1/2022 ca new 1 3
BB 4/1/2022 ca new 1 3
BB 7/1/2022 ca new 1 3
BB 10/1/2022 ca new 12 3
BB 1/1/2023 ca new 2 3
BB 4/1/2023 ca new 2 3
BB 7/1/2023 ca new 2 3
BB 10/1/2023 ca new 2 3
期望的
id date location status value1 value2
CC 1/1/2022 ny open
CC 4/1/2022 ny open
CC 7/1/2022 ny open
CC 10/1/2022 ny new 1 2
CC 1/1/2023 ny ok 1 2
CC 4/1/2023 ny ok 1 2
CC 7/1/2023 ny ok 1 3
CC 10/1/2023 ny ok 1 3
BB 1/1/2022 ca new 1 3
BB 4/1/2022 ca new 1 3
BB 7/1/2022 ca new 1 3
BB 10/1/2022 ca new 12 3
BB 1/1/2023 ca new 2 3
BB 4/1/2023 ca new 2 3
BB 7/1/2023 ca new 2 3
BB 10/1/2023 ca new 2 3
做
df.loc[(df.id == 'cc') & (df.date <= '07/01/2022'), 'status']= 'open'
此标记将所有日期标记为已打开,并且不移除其他列中的值。如有任何建议,将不胜感激。谢谢你的建议。
发布于 2022-07-27 22:44:14
不幸的是,关闭一个细胞似乎不适用于潘达斯。类似地,Pandas在设置dataframe时要求每个列的每个单元格都有一个值。
因此,nan
(不是数字)似乎是适合您的情况的确切占位符。然后,考虑导入numpy as np
并添加行以将相应的条目设置为np.nan
df.loc[(df.id == 'cc') & (df.date <= '07/01/2022'), 'value1']= np.nan
幸运的是,
df.fillna("")
打印Pandas框架时,没有显示那些烦人的NAN
条目,而是像您所希望的那样使单元格“空”。
此外,NumPy还允许使用聚合函数忽略nan值,例如可以找到np.nanmean()
的nan值,以避免中断对此类表的计算。
https://stackoverflow.com/questions/73145220
复制相似问题