簡體   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