如何将值(以时间格式)转换为数字(浮点数)

How to convert values ( in time format) into numbers (float)

我已经组合了数百个excelfiles.Then我想做一个支点table。但是,我发现weight列中有些值是日期格式,导致程序无法计算。我怎样才能把它们变成数字(浮点数)?

在 excel 个文件中发现问题:

代码:

li=[]
os.chdir('/content/drive/MyDrive/WEM')
allFiles=(glob.glob("*/*.xlsx"))

for file in allFiles:
  df=pd.read_excel(file,index_col=False)

  li.append(df)

WEM=pd.concat(li,axis=0,ignore_index=True)

WEM['Date']=pd.to_datetime(WEM['Start Time'],format="%d/%m/%Y %H:%M:%S")
WEM['Month']=WEM['Start Time'].dt.month

pd.pivot_table(WEM,index=['Month'],values=['weight (KG)'],aggfunc=[np.sum])

您可以过滤所有具有日期格式的行并将它们转换为如下值:

假设这个数据框:

>>> df
       weight
0          0.
1         22.
2          7.
3        20.5
4  1900-01-11  # <- should be 11.5
df['weight'] = (pd.to_datetime(df['weight'] + ' 12:00', errors='coerce') 
                - pd.to_datetime('1900-01-01')) \
                    .dt.total_seconds().div(60*60*24).add(1) \
                    .fillna(df['weight']).astype(float)

输出:

>>> df
   weight
0     0.0
1    22.0
2     7.0
3    20.5
4    11.5