如何将值(以时间格式)转换为数字(浮点数)
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
我已经组合了数百个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