如何在不使用python中的for循环的情况下迭代一列中的行以获得新列



我有一个名为Date的列,它属于对象类型,具有日期和时间,格式为"2019/10/07,12:44:58"。我试着从这个日期列中剪切出日期部分,然后将其转换为正确的日期格式。我想在不使用for循环的情况下,将此函数应用于日期列,以创建一个名为date1的新列。

正如我们所看到的,前两行的日期格式不同。因此,我们首先使用errors='coerce'将其余部分转换为datetime。然后,我们转换前两行并使用fillna,将两个日期放在一起:
date1 = pd.to_datetime(data['Date'], format='%Y/%m/%d,%H:%M:%S', errors='coerce')
date2 = pd.to_datetime(data.loc[date1.isna(), 'Date'], format='%d-%m-%Y,%H:%M:%S')
data['Date'] = date1.fillna(date2)
Date     Open     High      Low    Close   Qty  Value(Lk)  
0 2019-10-07 12:45:17  1208.65  1208.85  1208.40  1208.85  1125      13.60   
1 2019-10-07 12:45:00  1208.70  1209.10  1208.40  1209.10  9344     112.95   
2 2019-10-07 12:43:58  1208.80  1209.40  1208.35  1208.65  7342      88.75   
3 2019-10-07 12:42:58  1208.70  1209.20  1208.40  1209.00  9355     113.08   
4 2019-10-07 12:41:57  1208.75  1209.00  1207.80  1208.35  5890      71.17   
Trades BS  
0       4     
1      15     
2      13     
3      15     
4      13     

原始数据:

Date     Open     High      Low    Close   Qty  Value(Lk)  
0  07-10-2019,12:45:17  1208.65  1208.85  1208.40  1208.85  1125      13.60   
1  07-10-2019,12:45:00  1208.70  1209.10  1208.40  1209.10  9344     112.95   
2  2019/10/07,12:43:58  1208.80  1209.40  1208.35  1208.65  7342      88.75   
3  2019/10/07,12:42:58  1208.70  1209.20  1208.40  1209.00  9355     113.08   
4  2019/10/07,12:41:57  1208.75  1209.00  1207.80  1208.35  5890      71.17   
Trades BS  
0       4     
1      15     
2      13     
3      15     
4      13     

相关内容

最新更新