比较数据框行和分配值的最佳方法

时间:2019-04-17 18:28:11

标签: python pandas

如果需要将前一行的值与数据帧中的当前行的值进行比较,则需要将前一行的值与当前行的值进行比较。我已经达到了低谷,但是需要花费更多的时间来建议采用快速方式

for y in range(1, len(df_modified_filtered)):
    if df_modified_filtered['Cost Center'].iloc[y - 1] == df_modified_filtered['Cost Center'].iloc[y] :
        df_modified_filtered["costcenter_new"].iloc[y] = df_modified_filtered["costcenter_new"].iloc[y - 1]

需要最佳解决方案

2 个答案:

答案 0 :(得分:0)

在熊猫中使用shift,然后使用比较运算符。

答案 1 :(得分:0)

您可以在shift的帮助下通过以下方式进行操作:

有关转移的文档可以在这里找到:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.shift.html

import numpy as np

df_modified_filtered['costcenter_new']=np.where(df_modified_filtered['Cost Center']==df_modified_filtered['Cost Center'].shift(1),df_modified_filtered['costcenter_new'].shift(1),df_modified_filtered['costcenter_new'])