这似乎是一个简单的问题,但我已经被它卡住了一段时间。如果已经有人问过,我深表歉意。我有以下熊猫数据帧:
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
的所有列(不是datetime
或timestamp
,而是像上面一样仅限于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'])