python - 熊猫为每一列选择不同的行
问题描述
我有一个数据框,它由日期和三列组成,如下所示。
df = pd.DataFrame({'Date': ['01/01/2019', '02/01/2019', '03/01/2019', '04/01/2019', '05/01/2019', '06/01/2019', '07/01/2019', '08/01/2019'],
'A': [1,2,3,4,5,6,7,8],
'B': [11,12,13,14,15,16,17,18],
'C': [21,22,23,24,25,26,27,28]})
我正在尝试根据日期选择每列的部分内容。如果未选中,则希望返回零。如下。
df = pd.DataFrame({'Date': ['01/01/2019', '02/01/2019', '03/01/2019', '04/01/2019', '05/01/2019', '06/01/2019', '07/01/2019', '08/01/2019'],
'A': [1,2,0,0,5,6,7,8],
'B': [0,0,0,0,0,16,17,18],
'C': [21,22,0,0,0,0,0,0]})
在示例 So: 'A' 将被切片 01/01/2019 到 02/01/2019 和 05/01/2019 到 08/01/2019(或没有结束切片)。B 将在 06/01/2019 到 08/01/2019 切片(或没有结束切片,因为这是最后一个数据点。C 将在 01/01/2019 到 02/01/2019 切片。
解决方案
据我了解,您可以尝试使用df.where()
:
df['B']=df['B'].where(df.Date.between('06/01/2019','08/01/2019'),0)
print(df)
Date A B C
0 01/01/2019 1 0 21
1 02/01/2019 2 0 22
2 03/01/2019 3 0 23
3 04/01/2019 4 0 24
4 05/01/2019 5 0 25
5 06/01/2019 6 16 26
6 07/01/2019 7 17 27
7 08/01/2019 8 18 28
您可以对所需的所有列和条件执行相同的操作。
推荐阅读
- ios - UIScrollView contentInset 自动布局问题
- mysql - 网站中的 Sql 错误
- jmockit - @EJB 上的 JMockit 测试失败,持续查找
- multiprocessing - 在python中使用多处理删除文件
- sql - 仅当具有最新值的列“日期”具有另一列不为 NULL 时才检索行
- javascript - 输入自动完成不适用于标签和值
- blueprism - 控制室中的 Blueprism 进程看不到网页上的元素
- python - 为什么我在 python 中看到时区异常
- php - 了解参数化查询 php、sql、mysql
- sql - 使用过滤器在 SQL 中查找重复项