Pandas区分“日期”和“字符串”列,这两个列都是“对象”类型

2024-05-29 00:25:10 发布

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

这似乎是一个直截了当的问题,但我已经被困在这个问题上有一段时间了。如果已经有人问过,我会道歉。我有以下数据帧:

import pandas as pd
zed = pd.DataFrame({'gameDate': {0: datetime.date(2019, 12, 12),
  1: datetime.date(2019, 12, 12),
  2: datetime.date(2019, 12, 12),
  3: datetime.date(2019, 12, 12),
  4: datetime.date(2019, 12, 12)},
 'periodType': {0: 'REGULAR',
  1: 'REGULAR',
  2: 'REGULAR',
  3: 'REGULAR',
  4: 'REGULAR'}})

当我检查查看这个数据帧的dtypes时,我得到以下输出:

print(zed.dtypes)

gameDate      object
periodType    object
dtype: object

date类型和string类型都返回为object时,如何区分它们?我有一个更大的数据帧,我需要为它标识类型为date(不是datetimetimestamp,而是特别地date的所有列,如上所述),但我不知道具体的列名。我想使用.dtypes函数来帮助显示这些列

我可以创建一个函数来测试字符串是否为yyyy-mm-dd格式,但这似乎很乏味

谢谢


Tags: 数据函数import类型pandasdatetimedateobject
1条回答
网友
1楼 · 发布于 2024-05-29 00:25:10

您有两个选择:

1-在构建“gameDate”字典时使用pd.datetime,如下所示:

zed = pd.DataFrame(
    {'gameDate': {
        0: pd.datetime(2019, 12, 12),
        1: pd.datetime (2019, 12, 12),
        2: pd.datetime(2019, 12, 12),
        3: pd.datetime(2019, 12, 12),
        4: pd.datetime(2019, 12, 12)
    },
     'periodType': {
         0: 'REGULAR',
         1: 'REGULAR',
         2: 'REGULAR',
         3: 'REGULAR',
         4: 'REGULAR'
     }
    }
)
  • 但是pd.datetime已被弃用,将来将从熊猫中删除

2-声明数据帧后转换列(可能是最佳实践)。只需使用:

zed = pd.DataFrame(
    {'gameDate': {
        0: datetime.date(2019, 12, 12),
        1: datetime.date(2019, 12, 12),
        2: datetime.date(2019, 12, 12),
        3: datetime.date(2019, 12, 12),
        4: datetime.date(2019, 12, 12)
    },
    'periodType': {
        0: 'REGULAR',
        1: 'REGULAR',
        2: 'REGULAR',
        3: 'REGULAR',
        4: 'REGULAR'
    }
   }
)

zed['gameDate'] = pd.to_datetime(zed['gameDate'])

相关问题 更多 >

    热门问题