我想找到Vin列的最早日期.通过在列值_1和值_2上应用过滤器1.日期在另一列"日期"中给出
下面是我的数据框.
import pandas as pd
df_merge= pd.DataFrame({'Vin': ['a123', 'a123', 'a123', 'a123', 'b123', 'b123', 'b123', 'b123'],
'Date': ["2022-03-21T15:20:07.536Z", '2022-03-21T15:20:07.510Z', '2022-03-21T15:20:07.535Z',
'2022-03-21T15:20:07.535Z','2022-03-22T09:14:59.615Z','2022-03-22T09:14:59.412Z',
'2022-03-22T09:14:59.512Z','2022-03-22T09:14:59.615Z'],
'Value_1':['1', '0', '1', '1','1', '0', '0', '1'],
'Value_2':['1', '1', '1', '0','1', '0', '1', '1']})
我try 了一种方法,通过应用所需的过滤器创建了另一个数据帧,然后使用下面的命令获取最小日期.
Temp_table = pd.DataFrame()
Temp_table = df_merge[(df_merge['Value_1'] == 1) & (df_merge['Value_2'] == 1)]
Temp_table['Result'] = np.where(Temp_table.groupby('Vin')['Date'].transform('min').eq(Temp_table['Date']), 'Yes','No')
在此之后,我将此列与原始数据框合并.这创造了一个我不想要的 Big Data 框架.
下面是我的预期数据框,带有"结果"列:-
df_merge= pd.DataFrame({'Vin': ['a123', 'a123', 'a123', 'a123', 'b123', 'b123', 'b123', 'b123'],
'Date': ["2022-03-21T15:20:07.536Z", '2022-03-21T15:20:07.510Z', '2022-03-21T15:20:07.535Z',
'2022-03-21T15:20:07.535Z','2022-03-22T09:14:59.615Z','2022-03-22T09:14:59.412Z',
'2022-03-22T09:14:59.512Z','2022-03-22T09:14:59.615Z'],
'Value_1':['1', '0', '1', '1','1', '0', '0', '1'],
'Value_2':['1', '1', '1', '0','1', '0', '1', '1'],
'Result':['No', 'No', 'Yes', 'No','Yes', 'No', 'No', 'Yes']})
df_merge