【问题标题】:Using time and numerical value in conditional statements to create categorical column python在条件语句中使用时间和数值创建分类列python
【发布时间】:2020-09-04 06:35:57
【问题描述】:

我正在尝试使用时间和数值执行 if 语句来创建一个新列分类列

Condition - if time is between 05:00:00 and 19:00:00 and t_value > 0 & t_value <=13 then classify as "C" else "IC"

If time is not in the range then classify as NA

示例输入

                   t_value 
2020-05-17 00:00:00 0     
2020-05-17 01:00:00 0
2020-05-17 02:00:00 0
2020-05-17 03:00:00 0
2020-05-17 04:00:00 0
2020-05-17 05:00:00 0
2020-05-17 06:00:00 0
2020-05-17 07:00:00 8
2020-05-17 08:00:00 9
2020-05-17 09:00:00 10
2020-05-17 10:00:00 11
2020-05-17 11:00:00 12 

我不确定在这方面采取的方法

预期输出

                t_value  C/IC
2020-05-17 00:00:00 0    NA
2020-05-17 01:00:00 0    NA
2020-05-17 02:00:00 0    NA
2020-05-17 03:00:00 0    NA
2020-05-17 04:00:00 0    NA
2020-05-17 05:00:00 0    IC
2020-05-17 06:00:00 0    IC
2020-05-17 07:00:00 8    C
2020-05-17 08:00:00 9    C
2020-05-17 09:00:00 10   C
2020-05-17 10:00:00 11   C
2020-05-17 11:00:00 12   C

【问题讨论】:

  • 你是早上 9 点 IC 吗?它应该是 C
  • 是的,编辑了示例

标签: python dataframe time-series conditional-statements categories


【解决方案1】:
#convert to datetime index
df.index = pd.to_datetime(df.index)

#get condition for time boundary
cond1 = df.between_time( '05:00:00', '19:00:00')

print(cond1.index)
DatetimeIndex(['2020-05-17 05:00:00', '2020-05-17 06:00:00',
               '2020-05-17 07:00:00', '2020-05-17 08:00:00',
               '2020-05-17 09:00:00', '2020-05-17 10:00:00',
               '2020-05-17 11:00:00'],
              dtype='datetime64[ns]', freq=None)

#get index to match the t_value conditions

#indices that match time boundary, but not t_value boundary
ic = cond1.loc[~(cond1.t_value.gt(0)) & (cond1.t_value.le(13))].index

#indices that match time boundary and t_value boundary
c = cond1.loc[(cond1.t_value.gt(0)) & (cond1.t_value.le(13))].index

#assign value
df.loc[c,'C/IC'] = "C"
df.loc[ic,'C/IC'] = "IC"

print(df)

    t_value C/IC
2020-05-17 00:00:00 0   NaN
2020-05-17 01:00:00 0   NaN
2020-05-17 02:00:00 0   NaN
2020-05-17 03:00:00 0   NaN
2020-05-17 04:00:00 0   NaN
2020-05-17 05:00:00 0   IC
2020-05-17 06:00:00 0   IC
2020-05-17 07:00:00 8   C
2020-05-17 08:00:00 9   C
2020-05-17 09:00:00 10  C
2020-05-17 10:00:00 11  C
2020-05-17 11:00:00 12  C

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-07
  • 1970-01-01
  • 2020-09-18
相关资源
最近更新 更多