首页 > 解决方案 > 熊猫为每一列选择不同的行

问题描述

我有一个数据框,它由日期和三​​列组成,如下所示。

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 切片。

标签: pythonpandas

解决方案


据我了解,您可以尝试使用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

您可以对所需的所有列和条件执行相同的操作。


推荐阅读