use*_*309 1 python type-conversion pandas datetime64
我已经对熊猫数据框进行了切片。
end_date = df[-1:]['end']
type(end_date)
Out[4]: pandas.core.series.Series
end_date
Out[3]:
48173 2017-09-20 04:47:59
Name: end, dtype: datetime64[ns]
Run Code Online (Sandbox Code Playgroud)
48173并只获取2017-09-20 04:47:59字符串?我必须使用2017-09-20 04:47:59作为参数来调用 REST API ,所以我必须从 Pandasdatetime64系列中获取字符串。48173并只获取 datetime 对象 [类似的东西datetime.datetime.strptime('2017-09-20 04:47:59', '%Y-%m-%d %H:%M:%S')]。我需要它,因为稍后我将不得不检查是否'2017-09-20 04:47:59' < datetime.datetime(2017,1,9) 我只需要转换一个单元格值,而不是整列。如何进行这些转换?
看来你需要:
import pandas as pd
data = ['2017-09-20 04:47:59','2017-10-20 04:47:59','2017-09-30 04:47:59']
df = pd.DataFrame(data,columns=['end'])
df['end'] = pd.to_datetime(df['end'])
df
Run Code Online (Sandbox Code Playgroud)
df 将会:
end
0 2017-09-20 04:47:59
1 2017-10-20 04:47:59
2 2017-09-30 04:47:59
Run Code Online (Sandbox Code Playgroud)
之后,您可以使用以下代码摆脱索引并用作“时间戳”对象:
end_date = df['end'].iloc[-1] #get last row of column end
print(type(end_date)) # pandas.tslib.Timestamp
end_date_str = end_date.strftime('%Y-%m-%d %H:%M:%S') #convert to str
print(end_date_str) # '2017-09-30 04:47:59'
print(end_date < datetime.datetime(2017,1,9)) #False
Run Code Online (Sandbox Code Playgroud)