Leo*_*Leo 5 python datetime dataframe pandas
我有一个这样的数据框:
category date number
0 Cat1 2010-03-01 1
1 Cat2 2010-09-01 1
2 Cat3 2010-10-01 1
3 Cat4 2010-12-01 1
4 Cat5 2012-04-01 1
5 Cat2 2013-02-01 1
6 Cat3 2013-07-01 1
7 Cat4 2013-11-01 2
8 Cat5 2014-11-01 5
9 Cat2 2015-01-01 1
10 Cat3 2015-03-01 1
Run Code Online (Sandbox Code Playgroud)
我想检查此数据框中是否存在日期,但无法这样做。我尝试了以下各种方法,但仍然没有用:
if pandas.Timestamp("2010-03-01 00:00:00", tz=None) in df['date'].values:
print 'date exist'
if datetime.strptime('2010-03-01', '%Y-%m-%d') in df['date'].values:
print 'date exist'
if '2010-03-01' in df['date'].values:
print 'date exist'
Run Code Online (Sandbox Code Playgroud)
“日期存在”从未打印过。如何检查日期是否存在?因为我想在所有类别中插入数字不等于0的不存在日期,以便绘制连续的折线图(每条线一个类别)。感谢帮助。提前致谢。
最后一个给我这样的:
FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison
而date exist没有得到打印。
我认为您需要先转换为日期时间to_datetime,然后如果需要选择所有行,请使用boolean indexing:
df.date = pd.to_datetime(df.date)
print (df.date == pd.Timestamp("2010-03-01 00:00:00"))
0 True
1 False
2 False
3 False
4 False
5 False
6 False
7 False
8 False
9 False
10 False
Name: date, dtype: bool
print (df[df.date == pd.Timestamp("2010-03-01 00:00:00")])
category date number
0 Cat1 2010-03-01 1
Run Code Online (Sandbox Code Playgroud)
对于返回True使用校验值转换为numpy array通过values:
if ('2010-03-01' in df['date'].values):
print ('date exist')
Run Code Online (Sandbox Code Playgroud)
if (df.date == pd.Timestamp("2010-03-01 00:00:00")).any():
print ('date exist')
Run Code Online (Sandbox Code Playgroud)