python - 根据 Pandas 系列中的元素创建遮罩
问题描述
我有一个大约 250k 行的数据框,这是创建它的小版本的代码;
some_dict = {'month end': {0: pd.Timestamp('2020-10-31 00:00:00'),1: pd.Timestamp('2020-10-31 00:00:00')},'end date': {0: pd.Timestamp('2021-02-21 00:00:00'),1: pd.Timestamp('2021-10-20 00:00:00')},'value': {0: 36.15, 1: 40.10}}
df = pd.DataFrame(some_dict)
以前我使用掩码来获取value
列end date
是否在列month end + 2 days
和之间month end + 3 days
,就像这样;
mask = (df['end date'] > (df['month end'] + pd.Timedelta(2, 'days'))) & (df['end date'] <= (df['month end'] + pd.Timedelta(3, 'days')))
df['test'] = df.loc[mask, 'value']
现在我正在尝试根据下面的行创建一个蒙版;
mask = (df['End Date'].day > (df['month end'] + pd.Timedelta(2, 'days')).day) & (df['End Date'].day <= (df['month end'] + pd.Timedelta(3, 'days')).day) & (df['End Date'] >= (df['month end'] + pd.Timedelta(3, 'days')))
df['Greater than 2 days up to 3 days'] = df.loc[mask, 'value']
这应该True
用于具有 value的行40.10
和False
具有 value 的行36.15
。但两者都df['End Date'].day
产生(df['month end'] + pd.Timedelta(2, 'days')).day
一个错误,说'Series' object has no attribute 'day'
. 我想知道是否可以创建一个使用对象内的Series
对象的蒙版?在我的情况下,我有pd.Timestamp
,我想使用pd.Timestamp.day
.
上面的掩码是针对一列的,如果这可以顺利运行,我会尝试对其他列执行相同的操作,例如Greater than 4 days up to 5 days
,Greater than 2 weeks up to 3 weeks
等Greater than 2 months up to 3 months
。
编辑:我尝试创建额外的列,包括这样的month end
日子
df['month end day'] = df.loc[0, 'month end'].day
然后使用df['month end day']
而不是创建掩码df['month end'].day
,但这对end date
-column 不起作用,因为它在每一行中没有相同的值,并且写入
df['end date day'] = df.loc[:, 'end date'].day
给出同样的错误'Series' object has no attribute ´day´
。
解决方案
就像您必须使用.str
来访问系列中的字符串方法一样,您还需要使用dt
来访问系列值的datetimelike 属性。如果从 Series 访问特定Timestamp
值,则无需使用dt
,因为您Timestamp
直接使用。
所以,总结一下,只要使用就df['end date'].dt.day
可以了。
推荐阅读
- c# - 在asp-route(参数)中使用javascript变量?
- c# - C# Ninject 不从 JSON 反序列化注入
- algorithm - 使用不等的相关概率进行无替换抽样
- python - 熊猫日期时间格式 VS 谷歌表格日期格式
- javascript - 我得到 TypeError is not a function in nodeJS
- python-3.x - 显示一个不会冻结应用程序的python倒数计时器
- haskell - RebindableSyntax 不能按预期工作
- java - onBindViewHolder 重复结果
- c# - ASP.Net MVC 更新实体遇到“无法更新实体”。
- python - 如何跳转到开发服务器中的 Python 调试器?