Python使用for循环将多列转换为datetime

2024-10-01 15:44:09 发布

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

我被困在这上面,正在寻求社区帮助。我在dataframe中有一些列标记为对象,但希望转换为datetime。所有列都有年、月、日标准

time = np.array(['time1','time2','time3'])
def cols_to_datetime(df):

   cols_to_datetime = time

   for col in cols_to_datetime:
       df[col] = pd.to_datetime(df[col])

   return df

虽然都有年、月、日我收到这个错误

ValueError: to assemble mappings requires at least that [year, month, day] be specified: [day,month,year] is missing

df-

time1                      time2                      time3 
2020-06-06 20:01:10.327    2020-06-06 22:08:14.832    2020-06-06

df中可能存在需要跳过的空值

我在没有他们的情况下做了测试,运气也不好。所以我不太清楚为什么这种方法不起作用。谢谢


Tags: to标记dataframedfdatetimetimecolyear
1条回答
网友
1楼 · 发布于 2024-10-01 15:44:09

您可以使用^{}

import pandas as pd

def convert_times(df, cols=None):
    if not cols:
        # if no columns are specified, use all
        cols = df.columns
    df[cols] = df[cols].astype('datetime64')
    return df

df = pd.DataFrame({
    'created_at': ['2020-06-06 20:01:10.327'],
    'updated_at': ['2020-06-06 22:08:14.832']
})
print(df.dtypes)
# created_at    object
# updated_at    object
# dtype: object

df2 = convert_times(df)
print(df2.dtypes)
# created_at    datetime64[ns]
# updated_at    datetime64[ns]
# dtype: object

相关问题 更多 >

    热门问题