Python 如何基于熊猫中具有条件的现有列创建两个列?

Python 如何基于熊猫中具有条件的现有列创建两个列?,python,pandas,dataframe,Python,Pandas,Dataframe,我有这样一个日期框: import pandas as pd df = pd.DataFrame({'Car_ID': ['B332', 'B332', 'B332', 'C315', 'C315', 'C315', 'C315', 'C315', 'F310', 'F310'], \ 'Date': ['2018-03-15', '2018', '2018-03-12', '2018', '2018-03-16', '2018', \

我有这样一个日期框:

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

Out:    
    Car_ID  Date        Driver
0   B332    2018-03-15  Alex
1   B332    2018        Alex
2   B332    2018-03-12  Alex
3   C315    2018        Sara
4   C315    2018-03-16  Sara
5   C315    2018        Sara
6   C315    2018        Sara
7   C315    2018-03-11  Sara
8   F310    2018-03-10  Franck
9   F310    2018        Franck
    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  Alex
3   C315    2018        2018-03-16  2018        Sara
4   C315    2018-03-16  2018-03-16  2018-03-16  Sara
5   C315    2018        2018-03-11  2018-03-16  Sara
6   C315    2018        2018-03-11  2018-03-16  Sara
7   C315    2018-03-11  2018-03-11  2018-03-11  Sara
8   F310    2018-03-10  2018-03-10  2018-03-10  Franck
9   F310    2018        2018        2018-03-10  Franck
哪些包含不正确的日期?因此,我想创建两个新列,如下所示:

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

Out:    
    Car_ID  Date        Driver
0   B332    2018-03-15  Alex
1   B332    2018        Alex
2   B332    2018-03-12  Alex
3   C315    2018        Sara
4   C315    2018-03-16  Sara
5   C315    2018        Sara
6   C315    2018        Sara
7   C315    2018-03-11  Sara
8   F310    2018-03-10  Franck
9   F310    2018        Franck
    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  Alex
3   C315    2018        2018-03-16  2018        Sara
4   C315    2018-03-16  2018-03-16  2018-03-16  Sara
5   C315    2018        2018-03-11  2018-03-16  Sara
6   C315    2018        2018-03-11  2018-03-16  Sara
7   C315    2018-03-11  2018-03-11  2018-03-11  Sara
8   F310    2018-03-10  2018-03-10  2018-03-10  Franck
9   F310    2018        2018        2018-03-10  Franck
对于
D_Min
对于不正确的日期,我希望选择正确日期之前的日期。如果之前的日期不正确,我将照原样处理,例如
9 F310 2018-03-10法郎
。 我想对
D_Max
也这样做。但如果日期正确,则
D_Min
D_Max
应相同


谢谢你的建议

首先用布尔掩码将年份替换为
NaN
s,然后用替换为用于反向填充,最后用替换为
NaN
s:

详细信息

print (s)
0    2018-03-15
1           NaN
2    2018-03-12
3           NaN
4    2018-03-16
5           NaN
6           NaN
7    2018-03-11
8    2018-03-10
9           NaN
Name: Date, dtype: object

您好,我如何做同样的工作,但通过groupby 2列而不是1列?谢谢@jezrael@M-M-然后将
s.groupby(df['Driver'])
更改为
s.groupby([df['Driver'],df['col']))
它不工作@jezrael我得到了un错误
TypeError:unhabable类型:'list'
@M-M-刚刚在pandas
0.23.1
中测试了样本数据和
g=s.groupby([df['Car\u ID',df['Driver'])
-对我来说它工作正常。可能忘记了
[]
?是的,这是
[]
问题。蒂纳克斯