为了账号安全,请及时绑定邮箱和手机立即绑定

熊猫仅从另一列复制值到某个日期

熊猫仅从另一列复制值到某个日期

繁星淼淼 2022-07-19 16:48:12
我有一列Date类型datetime64[ns],每个日期由一行组成。还有两列A和B。假设日期从 2019 年 12 月 1 日开始,一直持续到 2020 年 2 月 29 日,我希望将所有值从列复制A到列,B直到某个日期 x。例如,如果 x = 2020 年 2 月 15 日,我需要将 A 的值从 2019 年 12 月 1 日到 2020 年 2 月 14 日复制到 B 列。任何帮助表示赞赏!
查看完整描述

1 回答

?
侃侃尔雅

TA贡献1801条经验 获得超16个赞

我认为您需要Series.mask的复制数据不那么像x,因此掩码由以下人员创建Series.lt:


np.random.seed(2020)


rng = pd.date_range('2019-12-01', '2020-02-29')

df = pd.DataFrame({'Date': rng, 

                   'A': np.random.randint(10, size=91),

                   'B': np.random.randint(10, size=91)})  

print (df.head(20))

         Date  A  B

0  2019-12-01  0  5

1  2019-12-02  8  2

2  2019-12-03  3  4

3  2019-12-04  6  3

4  2019-12-05  3  0

5  2019-12-06  3  9

6  2019-12-07  7  8

7  2019-12-08  8  2

8  2019-12-09  0  0

9  2019-12-10  0  6

10 2019-12-11  8  7

11 2019-12-12  9  1

12 2019-12-13  3  7

13 2019-12-14  7  2

14 2019-12-15  2  5

15 2019-12-16  3  9

16 2019-12-17  6  6

17 2019-12-18  5  7

18 2019-12-19  0  9

19 2019-12-20  4  3

x = '2019-12-10'


df['B'] = df['B'].mask(df["Date"].lt(x), df['A'])

print (df.head(20))

         Date  A  B

0  2019-12-01  0  0

1  2019-12-02  8  8

2  2019-12-03  3  3

3  2019-12-04  6  6

4  2019-12-05  3  3

5  2019-12-06  3  3

6  2019-12-07  7  7

7  2019-12-08  8  8

8  2019-12-09  0  0

9  2019-12-10  0  6

10 2019-12-11  8  7

11 2019-12-12  9  1

12 2019-12-13  3  7

13 2019-12-14  7  2

14 2019-12-15  2  5

15 2019-12-16  3  9

16 2019-12-17  6  6

17 2019-12-18  5  7

18 2019-12-19  0  9

19 2019-12-20  4  3


查看完整回答
反对 回复 2022-07-19
  • 1 回答
  • 0 关注
  • 87 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信