python - 从 pandas `dataframe` 创建从到对
问题描述
我有一个输入数据框:
import pandas as pd
df_input = pd.DataFrame({
'id' : ['id_1', 'id_1', 'id_1', 'id_2', 'id_2', 'id_2', 'id_3', 'id_4', 'id_4'],
'stage' : ['A', 'B', 'C', 'B', 'C', 'D', 'B', 'A', 'D'],
'date' : pd.to_datetime(['2020-01-01', '2020-01-03', '2020-01-15',
'2020-01-02', '2020-01-07', '2020-01-21',
'2020-01-05', '2020-01-03', '2020-01-05'])
})
从上面的数据框中,我想创建from-to
对。id
&列将date
用于确定from
& to
,如果stage
最后一对将是stage_name-None
。预期输出:
解决方案
注意:尽量不要将变量命名为内置变量,例如:输入是内置变量- 我已将数据框视为inp
您可以在重命名并将其用作数据框后使用 shift aftersort_values
和assign
column to stage :
a = inp.sort_values(['id','date'])
out = a['stage'].to_frame('from').assign(to=a.groupby("id")['stage'].shift(-1))
print(out)
from to
0 A B
1 B C
2 C NaN
3 B C
4 C D
5 D NaN
6 B NaN
7 A D
8 D NaN
推荐阅读
- google-cloud-platform - GCP 服务帐号无法读取组织或结算帐号
- android - 我可以通过我的 Android 应用程序使用 Google 字体吗?
- c++ - 矢量错误,一个非常混乱的分割错误?
- data-structures - For 循环时间复杂度
- keras - 我可以从自定义 Keras 层中访问曾经的“tf.get_global_step()”吗?
- swift - 如何使用 AVCaptureSession 录制我的 Mac 的内部声音,而不是麦克风!
- c++ - Typedef 在第一个函数定义后不起作用?
- java - Java:如何删除双引号之间的所有换行符
- jquery - 如何将输入的值放入表中的一组输入中使用jquery
- c++ - Ubuntu c++:同时显示 3D 网格和 2D 图像的最简单方法?