我有一个这样的日期框架:
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
,我想替换D_Min
列中D_Max
值的Error
和Driver
。
对于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
我怎么能做这项工作?
谢谢!
答案 0 :(得分:1)
您可以有条件地用list
替换所选系列。然后根据需要使用$ for a in `seq 6`; do python3 -m timeit -s "a = 10**$a" 'a in list(range(a))'; done
1000000 loops, best of 3: 0.84 usec per loop
100000 loops, best of 3: 3.04 usec per loop
10000 loops, best of 3: 57.7 usec per loop
1000 loops, best of 3: 639 usec per loop
100 loops, best of 3: 6.74 msec per loop
10 loops, best of 3: 70.3 msec per loop
/ NaN
:
ffill