python - Pandas 字符串以并创建两个数据框结尾
问题描述
我有一个包含两列的数据框。一个是日期列,其末尾有一个空格和一个小时,它存储为一个字符串。另一列是那个小时的计数。我希望从这些数据中创建两个数据框。一个包含从上午 7 点到下午 6 点的数据或以 7-17 结尾的日期列。另一个日期字符串的值是 18,19,20,21,22,23,0,1,2,3,4,5,6。我环顾四周,但我能找到的大部分信息都是布尔值,比如 pandas.Series.str.endswith。
数据如下:
df
Date Count
0 2018-11-20 0 0
1 2018-11-20 1 0
2 2018-11-20 2 0
3 2018-11-20 3 1
4 2018-11-20 4 0
5 2018-11-20 5 0
6 2018-11-20 6 0
7 2018-11-20 7 1
8 2018-11-20 8 6
9 2018-11-20 9 0
10 2018-11-20 10 0
11 2018-11-20 11 0
12 2018-11-20 12 0
13 2018-11-20 13 0
14 2018-11-20 14 2
15 2018-11-20 15 5
16 2018-11-20 16 23
17 2018-11-20 17 0
18 2018-11-20 18 0
19 2018-11-20 19 3
期望的输出:
business_hours_df
Date Count
0 2018-11-20 7 1
1 2018-11-20 8 6
2 2018-11-20 9 0
3 2018-11-20 10 0
4 2018-11-20 11 0
5 2018-11-20 12 0
6 2018-11-20 13 0
7 2018-11-20 14 2
8 2018-11-20 15 5
9 2018-11-20 16 23
10 2018-11-20 17 0
non_business_hours_df
Date Count
0 2018-11-20 0 0
1 2018-11-20 1 0
2 2018-11-20 2 0
3 2018-11-20 3 1
4 2018-11-20 4 0
5 2018-11-20 5 0
6 2018-11-20 6 0
7 2018-11-20 18 0
8 2018-11-20 19 3
解决方案
您可以使用布尔掩码:
import pandas as pd
data = [['2018-11-20 0', 0],
['2018-11-20 1', 0],
['2018-11-20 2', 0],
['2018-11-20 3', 1],
['2018-11-20 4', 0],
['2018-11-20 5', 0],
['2018-11-20 6', 0],
['2018-11-20 7', 1],
['2018-11-20 8', 6],
['2018-11-20 9', 0],
['2018-11-20 10', 0],
['2018-11-20 11', 0],
['2018-11-20 12', 0],
['2018-11-20 13', 0],
['2018-11-20 14', 2],
['2018-11-20 15', 5],
['2018-11-20 16', 23],
['2018-11-20 17', 0],
['2018-11-20 18', 0],
['2018-11-20 19', 3]]
df = pd.DataFrame(data=data, columns=['Date', 'Count'])
mask = df['Date'].apply(lambda x: 7 <= int(x.split()[-1]) <= 17)
business_hours_df = df[mask]
non_business_hours_df = df[~mask]
print(business_hours_df)
print(non_business_hours_df)
输出
Date Count
7 2018-11-20 7 1
8 2018-11-20 8 6
9 2018-11-20 9 0
10 2018-11-20 10 0
11 2018-11-20 11 0
12 2018-11-20 12 0
13 2018-11-20 13 0
14 2018-11-20 14 2
15 2018-11-20 15 5
16 2018-11-20 16 23
17 2018-11-20 17 0
Date Count
0 2018-11-20 0 0
1 2018-11-20 1 0
2 2018-11-20 2 0
3 2018-11-20 3 1
4 2018-11-20 4 0
5 2018-11-20 5 0
6 2018-11-20 6 0
18 2018-11-20 18 0
19 2018-11-20 19 3
推荐阅读
- svg - svg 中的动画在边界处生成一条像素线
- php - 由于 JSON 中奇怪的 OBJECT 名称,难以以 PHP 数组的形式获取 JSON 数据
- c++ - 从指针 C++ 中获取对象
- regex - 有没有一种pythonic方法来计算两个字符串中前导匹配字符的数量?
- javascript - 将电子渲染器进程转移到默认浏览器
- java - 移动到 open-jdk 8u212 时 IntelliJ 的部署问题
- android - 422:尝试使用 Sky-uk gradle-maven-plugin 发布 maven 存储库时无法处理的实体
- api - 如何将 JBPM 流程公开为服务?
- amazon-web-services - 如何在 Keycloak 中为 AWS SAML 端点配置 AudienceRestriction
- c# - 为什么我的代码中的“%”会产生另一个数字,而不是我自己计算时得到的数字?