python - 熊猫仅从另一列复制值到某个日期
问题描述
我有一列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 列。
任何帮助表示赞赏!
解决方案
我认为您需要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
推荐阅读
- python - 从包含有向图的 .dot 文件创建一个图形
- laravel - 如何将两个中间件分配给同一组路由。拉拉维尔
- laravel - Laravel 和 vue:require 未定义
- r - 在 R 中重新组织数据框(总概率)
- python - python cgi中防止路径遍历的代码
- git - git push分支与master的区别
- powershell - 使用 Powershell 将 Prem 上的 SQL Server 中的数据添加到 SharePoint 列表
- javascript - 在浏览站点时保持 WebRTC 视频流处于活动状态
- android - 如何在 ReactNative 的功能组件中同时拥有 Header 和 BottomTabNavigator?
- python - Apache Beam 管道未使用 Python 并行运行任务