Python Pandas-基于另一列中先前值的新列

时间:2018-07-26 21:36:16

标签: python pandas

这是数据

User    Date    Status
1   1/1/2018    A
1   1/2/2018    B
1   1/3/2018    C
2   1/4/2018    D
2   1/5/2018    E
3   1/6/2018    F
3   1/7/2018    G
3   1/8/2018    H

我正在努力做到这一点

User    Date    Status  Previous
1   1/1/2018    A       NaN
1   1/2/2018    B       A
1   1/3/2018    C       B
2   1/4/2018    D       NaN
2   1/5/2018    E       D
3   1/6/2018    F       NaN
3   1/7/2018    G       F
3   1/8/2018    H       G

我尝试使用shift方法,但无法弄清楚我在做什么错。

df.sort_values(by=['user', 'date'], ascending=True, inplace=True)
df.set_index(['user', 'date'], inplace=True)
df['Previous'] = np.nan
for idx in df.index.levels[0]:
    df.Previous[idx] = df.Status[idx].shift()

1 个答案:

答案 0 :(得分:0)

尝试使用textView3使您走上了正确的路,但是使用<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#444444"> <View android:id="@+id/background" android:layout_width="0dp" android:layout_height="0dp" android:background="#FFFFFF" app:layout_constraintBottom_toBottomOf="@+id/textView3" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"/> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="16dp" android:text="TextView 1" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"/> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="16dp" android:text="TextView 2" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/textView1"/> <TextView android:id="@+id/textView3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="16dp" android:paddingBottom="16dp" android:text="TextView 3" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/textView2"/> </android.support.constraint.ConstraintLayout> 可以比使用迭代更快地完成操作(通常,通过数据帧进行迭代比较麻烦,并且有更好的方法内置于shift):

groupby