如果您运行的是熊猫的最新版本,则可以使用datetime属性
dt访问datetime组件:
In [6]:df['date'] = pd.to_datetime(df['date'])df['year'], df['month'] = df['date'].dt.year, df['date'].dt.monthdfOut[6]: date Count year month0 2010-06-30 525 2010 61 2010-07-30 136 2010 72 2010-08-31 125 2010 83 2010-09-30 84 2010 94 2010-10-29 4469 2010 10
编辑
看起来您正在运行的是较早版本的熊猫,在这种情况下,以下方法将起作用:
In [18]:df['date'] = pd.to_datetime(df['date'])df['year'], df['month'] = df['date'].apply(lambda x: x.year), df['date'].apply(lambda x: x.month)dfOut[18]: date Count year month0 2010-06-30 525 2010 61 2010-07-30 136 2010 72 2010-08-31 125 2010 83 2010-09-30 84 2010 94 2010-10-29 4469 2010 10
关于为什么它没有将其解析为日期时间,
read_csv您需要传递列的顺序位置(
[0]),因为当
True它尝试解析列时,
[1,2,3]请参见文档
In [20]:t="""date Count6/30/2010 5257/30/2010 1368/31/2010 1259/30/2010 8410/29/2010 4469"""df = pd.read_csv(io.StringIO(t), sep='s+', parse_dates=[0])df.info()<class 'pandas.core.frame.Dataframe'>Int64Index: 5 entries, 0 to 4Data columns (total 2 columns):date 5 non-null datetime64[ns]Count 5 non-null int64dtypes: datetime64[ns](1), int64(1)memory usage: 120.0 bytes
因此,如果您将参数传递
parse_dates=[0]给,
read_csv则
to_datetime加载后无需再调用“日期”列。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)