我有一个 pandas 数据框,其中包含字符串格式的列值和日期时间索引。我想创建一个新列,其中包含过去两天的列值列表。使用 pandas 可以实现这一点吗?
原始数据农场:
date col1 col2
0 2018-07-08 a b
1 2018-07-09 c d
2 2018-07-10 e f
3 2018-07-11 g h
4 2018-07-12 i j
5 2018-07-13 k l
6 2018-07-14 m n
Run Code Online (Sandbox Code Playgroud)
最终数据框:
date col1 col2 col3
0 2018-07-08 a b NaN
1 2018-07-09 c d NaN
2 2018-07-10 e f b, d
3 2018-07-11 g h d, f
4 2018-07-12 i j f, h
5 2018-07-13 k l h, j
6 2018-07-14 m n j, l
Run Code Online (Sandbox Code Playgroud)
df.iloc[:,2].shift(2)+ ',' +df.iloc[:,2].shift(1)
Run Code Online (Sandbox Code Playgroud)
编辑
我们可以将其扩展到更通用的设置,
定义自定义的滚动连接函数,
rolling_cat = lambda s, n: pd.Series(zip(*[s.shift(x+1) for x in range(n)])).str.join(',')
Run Code Online (Sandbox Code Playgroud)
应用功能
rolling_cat(df.iloc[:,2], n=2)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1234 次 |
| 最近记录: |