如何在保留行的同时,用NAN替换每个组的重复项
我需要在不删除行的情况下保留行,可能还需要在第一个原始值出现的地方保留第一个原始值
import pandas as pd
from datetime import timedelta
df = pd.DataFrame({
'date': ['2019-01-01 00:00:00','2019-01-01 01:00:00','2019-01-01 02:00:00', '2019-01-01 03:00:00',
'2019-09-01 02:00:00','2019-09-01 03:00:00','2019-09-01 04:00:00', '2019-09-01 05:00:00'],
'value': [10,10,10,10,12,12,12,12],
'ID': ['Jackie','Jackie','Jackie','Jackie','Zoop','Zoop','Zoop','Zoop',]
})
df['date'] = pd.to_datetime(df['date'], infer_datetime_format=True)
date value ID
0 2019-01-01 00:00:00 10 Jackie
1 2019-01-01 01:00:00 10 Jackie
2 2019-01-01 02:00:00 10 Jackie
3 2019-01-01 03:00:00 10 Jackie
4 2019-09-01 02:00:00 12 Zoop
5 2019-09-01 03:00:00 12 Zoop
6 2019-09-01 04:00:00 12 Zoop
7 2019-09-01 05:00:00 12 Zoop
所需数据帧:
date value ID
0 2019-01-01 00:00:00 10 Jackie
1 2019-01-01 01:00:00 NaN Jackie
2 2019-01-01 02:00:00 NaN Jackie
3 2019-01-01 03:00:00 NaN Jackie
4 2019-09-01 02:00:00 12 Zoop
5 2019-09-01 03:00:00 NaN Zoop
6 2019-09-01 04:00:00 NaN Zoop
7 2019-09-01 05:00:00 NaN Zoop
编辑:
重复的值只能在频率不同的同一天删除。因此,如果值10在1月1日显示两次,在1月2日显示三次,则值10应仅在1月1日和1月2日显示一次
如果对数据帧进行了排序,则此操作有效-如您的示例中所示:
根据日期分组并获取第一个观察值(按时间排序时不一定是第一个),然后将结果合并回原始数据帧
我假设您检查了
value
列和ID
列上的重复项,并进一步检查了date
列的date
正如@Trenton所建议的,您可以使用
pd.NA
来避免导入numpy(注意:as@rafaelc sugguest:下面是解释
pd.NA
和np.nan
{a1}之间细节差异的链接)相关问题 更多 >
编程相关推荐