我有一个 pd DataFrame 列,其中包含不同格式的日期值。例如“YYYY-MM-DD hh:mm:ss”和“DD.MM.YYYY”甚至“DD.MM”。我想将它们全部转换为一种格式(例如“YYYY-MM-DD”)并尝试过(除此之外)
df[~df.date.str.contains('(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})')]
查找日期未写为“YYYY-MM-DD hh:mm:ss”的行。然而,这是行不通的。
因此我检查了列的类型
df['date'].dtype #prints dtype('O')
然后我检查了
for index, row in df.iterrows():
print(type(row['date']))
并收到了混合打印,例如“datetime.datetime”类和“str”类
我很困惑。当列是“对象”数据类型时,为什么我并不总是得到“str”?有人知道如何使正则表达式工作吗?
最佳答案
def findIndex(x):
try:
pd.to_datetime(x).strftime('%m/%d/%Y')
return
except:
return True
df.date.apply(lambda x: findIndex(x))
现在您可以获得所有奇怪格式的索引。希望这会有所帮助。
关于python - pandas 日期列中的不同格式 - 列与行的数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53671706/