繁体   English   中英

Pandas 只从另一列复制值直到某个日期

[英]Pandas copy values from another column only upto a certain date

我有一个datetime64[ns]类型的Date列,每个 date 由一行组成。 还有两列AB 假设日期从 2019 年 12 月 1 日开始一直持续到 2020 年 2 月 29 日,我希望将所有值从A列复制到B列,直到某个日期 x。

例如,如果 x = 2020 年 2 月 15 日,我需要将 A 的值从 2019 年 12 月 1 日到 2020 年 2 月 14 日复制到 B 列中。

任何帮助表示赞赏!

我认为你需要Series.mask来复制数据而不像x ,所以 mask 是由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

暂无
暂无

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

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