熊猫用"object"类型区分"date"列和"string"列



这似乎是一个简单的问题,但我已经被它卡住了一段时间。如果已经有人问过,我深表歉意。我有以下熊猫数据帧:

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

当两者都返回为object时,如何区分date类型和string类型?我有一个大得多的数据帧,我需要识别类型为date的所有列(不是datetimetimestamp,而是像上面一样仅限于date(,但我不特别知道列名。我想使用类似.dtypes函数的东西来帮助显示这些列。

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

谢谢!

您有两个选项:

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已弃用,将来将从panda中删除

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

相关内容

  • 没有找到相关文章

最新更新