这似乎是一个直截了当的问题,但现在我已经坚持了一段时间。抱歉,如果已经有人问过这个问题。我有以下熊猫数据框:
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
的列(不是datetime
或timestamp
,而仅是date
,如上所述),但是我不特别知道列名。我想使用类似.dtypes
函数的方法来帮助显示这些列。
我可以创建一个函数来测试字符串是否为yyyy-mm-dd
格式,但这似乎很乏味。
谢谢!
答案 0 :(得分:1)
您有两个选择:
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'
}
}
)
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'])