gpt4 book ai didi

python - 如何有条件地更改相邻行的列值?

转载 作者:行者123 更新时间:2023-12-01 09:12:38 24 4
gpt4 key购买 nike

我有一个像这样的日期框:

df = pd.DataFrame({'Car_ID': ['B332', 'B332', 'B332', 'B332', 'C315', 'C315', 'C315', 'C315', 'C315', 'C315', 'F310', 'F310'], \
'Date': ['2018-03-15', '2018', '2018-03-12', '2018-03-12', '2018', '2018-03-16', '2018', \
'2018', '2018-03-11','2018-03-11', '2018-03-10', '2018'], \
'D_Min' : ['2018-03-15', '2018-03-12', '2018-03-12', '2018-03-12','2018-03-16', '2018-03-16', '2018-03-11', '2018-03-11',\
'2018-03-11','2018-03-11', '2018-03-10', '2018'],\
'D_Max' :['2018-03-15', '2018-03-15', '2018-03-12','2018-03-12', '2018', '2018-03-16', '2018-03-16', '2018-03-16', \
'2018-03-11','2018-03-11', '2018-03-10', '2018-03-10'], \
'Driver': ['Alex', 'Alex', 'Error', 'Alex','Sara', 'Sara', 'Sara', 'Sara', 'Error', 'Sara', 'Franck','Franck']})
df[['Car_ID', 'Date', 'D_Min', 'D_Max', 'Driver']]

Out:

Car_ID Date D_Min D_Max Driver
0 B332 2018-03-15 2018-03-15 2018-03-15 Alex
1 B332 2018 2018-03-12 2018-03-15 Alex
2 B332 2018-03-12 2018-03-12 2018-03-12 Error
3 B332 2018-03-12 2018-03-12 2018-03-12 Alex
4 C315 2018 2018-03-16 2018 Sara
5 C315 2018-03-16 2018-03-16 2018-03-16 Sara
6 C315 2018 2018-03-11 2018-03-16 Sara
7 C315 2018 2018-03-11 2018-03-16 Sara
8 C315 2018-03-11 2018-03-11 2018-03-11 Error
9 C315 2018-03-11 2018-03-11 2018-03-11 Sara
10 F310 2018-03-10 2018-03-10 2018-03-10 Franck
11 F310 2018 2018 2018-03-10 Franck

我想替换Driver列中Error值的D_MinD_Max

对于Error,我想取之前的D_Min和之后的D_Max。像这样的事情:

    Out:

Car_ID Date D_Min D_Max Driver
0 B332 2018-03-15 2018-03-15 2018-03-15 Alex
1 B332 2018 2018-03-12 2018-03-15 Alex
2 B332 2018-03-12 2018-03-12 2018-03-15 Error
3 B332 2018-03-12 2018-03-12 2018-03-12 Alex
4 C315 2018 2018-03-16 2018 Sara
5 C315 2018-03-16 2018-03-16 2018-03-16 Sara
6 C315 2018 2018-03-11 2018-03-16 Sara
7 C315 2018 2018-03-11 2018-03-16 Sara
8 C315 2018-03-11 2018-03-11 2018-03-16 Error
9 C315 2018-03-11 2018-03-11 2018-03-11 Sara
10 F310 2018-03-10 2018-03-10 2018-03-10 Franck
11 F310 2018 2018 2018-03-10 Franck

如何完成这项工作?

提前致谢!

最佳答案

您可以有条件地用 NaN 替换选定的系列。然后根据需要使用 ffill/bfill:

df.loc[df['Driver'] == 'Error', ['D_Min', 'D_Max']] = np.nan

df['D_Max'] = df['D_Max'].ffill()
df['D_Min'] = df['D_Min'].bfill()

print(df)

Car_ID D_Max D_Min Date Driver
0 B332 2018-03-15 2018-03-15 2018-03-15 Alex
1 B332 2018-03-15 2018-03-12 2018 Alex
2 B332 2018-03-15 2018-03-12 2018-03-12 Error
3 B332 2018-03-12 2018-03-12 2018-03-12 Alex
4 C315 2018 2018-03-16 2018 Sara
5 C315 2018-03-16 2018-03-16 2018-03-16 Sara
6 C315 2018-03-16 2018-03-11 2018 Sara
7 C315 2018-03-16 2018-03-11 2018 Sara
8 C315 2018-03-16 2018-03-11 2018-03-11 Error
9 C315 2018-03-11 2018-03-11 2018-03-11 Sara
10 F310 2018-03-10 2018-03-10 2018-03-10 Franck
11 F310 2018-03-10 2018 2018 Franck

关于python - 如何有条件地更改相邻行的列值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51520837/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com