[英]Copy values from one column to another if values equal to a certain number
[英]Pandas copy values from another column only upto a certain date
我有一個datetime64[ns]
類型的Date
列,每個 date 由一行組成。 還有兩列A
和B
。 假設日期從 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.