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

2024-10-01 11:35:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我组合了数百个excel文件。然后我想制作一个透视表。但是,我发现“权重”列中的某些值是日期格式的,导致程序无法计算。如何将它们转换为数字(浮动)

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])

Tags: 文件dfindextime格式liexcelstart
1条回答
网友
1楼 · 发布于 2024-10-01 11:35:27

您可以使用日期格式筛选所有行,并将其转换为如下值:

假设此数据帧:

>>> 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

相关问题 更多 >