繁体   English   中英

在 DataFrame pandas 中为日期和年份创建布尔列

[英]Create boolean columns in DataFrame pandas for date and year

让它成为以下 Python Panda DataFrame:

代码 日期 颜色 柜台
TTT 2021-02-01 00:30:11 蓝色的 2
AVC 2022-02-01 10:00:01 红色的 12
生物安全信息交易所所 2022-02-02 22:00:01 红色的 12
2022-03-01 01:00:03 蓝色的 1
UDY 2022-05-01 09:02:01 红色的 3
优德 2022-12-01 09:02:01 绿色 0

我需要按年和月创建一个列,其中包括该行是否属于(布尔)列中指示的特定月份。 生成的 DataFrame 的示例如下:

代码 日期 颜色 柜台 2021-02 2022-02 2022-03 2022-05 2022-12
TTT 2021-02-01 00:30:11 蓝色的 2 真的 错误的 错误的 错误的 错误的
AVC 2022-02-01 10:00:01 红色的 12 错误的 真的 错误的 错误的 错误的
生物安全信息交易所所 2022-02-02 22:00:01 红色的 12 错误的 真的 错误的 错误的 错误的
2022-03-01 01:00:03 蓝色的 1 错误的 错误的 真的 错误的 错误的
UDY 2022-05-01 09:02:01 红色的 3 错误的 错误的 错误的 真的 错误的
优德 2022-12-01 09:02:01 绿色 0 错误的 错误的 错误的 错误的 真的

为了解决这个问题,只使用了date列中的信息,但我包含了完整的 DataFrame 以避免不兼容。

您可以尝试df.to_periodstr.get_dummies

out = df.join(pd.to_datetime(df['date']).dt.to_period("M")
              .astype(str).str.get_dummies()
              .astype(bool))
print(out)

  code                 date  color  counter  2021-02  2022-02  2022-03  2022-05  2022-12
0  TTT  2021-02-01 00:30:11   blue        2     True    False    False    False    False
1  AVC  2022-02-01 10:00:01    red       12    False     True    False    False    False
2  BCH  2022-02-02 22:00:01    red       12    False     True    False    False    False
3  POD  2022-03-01 01:00:03   blue        1    False    False     True    False    False
4  UDY  2022-05-01 09:02:01    red        3    False    False    False     True    False
5  YUD  2022-12-01 09:02:01  green        0    False    False    False    False     True

get_dummiesSeries.dt.strftime用于YYYY-MM格式,将参数dtype用于布尔值:

df = df.join(pd.get_dummies(df['date'].dt.strftime('%Y-%m'), dtype=bool))
print (df)
  code                date  color  counter  2021-02  2022-02  2022-03  \
0  TTT 2021-02-01 00:30:11   blue        2     True    False    False   
1  AVC 2022-02-01 10:00:01    red       12    False     True    False   
2  BCH 2022-02-02 22:00:01    red       12    False     True    False   
3  POD 2022-03-01 01:00:03   blue        1    False    False     True   
4  UDY 2022-05-01 09:02:01    red        3    False    False    False   
5  YUD 2022-12-01 09:02:01  green        0    False    False    False   

   2022-05  2022-12  
0    False    False  
1    False    False  
2    False    False  
3    False    False  
4     True    False  
5    False     True  

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM