Python:如何避免在数据帧中转换循环?
我有以下数据帧:Python:如何避免在数据帧中转换循环?,python,datetime,pandas,dataframe,Python,Datetime,Pandas,Dataframe,我有以下数据帧: df: y m d val 0 2013 10 1 33.5 1 2013 10 2 37.1 2 2013 10 3 25.9 3 2013 10 4 31.3 4 2013 10 5 35.3 5 2013 10 6 55.4 6 2013 10 7 29.5 7 2013 10 8 31.3 8 2013 1
df:
y m d val
0 2013 10 1 33.5
1 2013 10 2 37.1
2 2013 10 3 25.9
3 2013 10 4 31.3
4 2013 10 5 35.3
5 2013 10 6 55.4
6 2013 10 7 29.5
7 2013 10 8 31.3
8 2013 10 9 27.7
9 2013 10 10 25.9
其中,y
,m
,d
分别对应于年、月和日。我想将它们聚合并转换为datetime
df['date'] = 0
for v in df.index:
df['date'][v] = datetime.datetime(df.y[v], df.m[v], df.d[v])
我想知道避免这种循环的最佳方法是什么
pd.to_datetime((df['y']*10000 + df['m']*100 + df['d']).astype(str))
Out:
0 2013-10-01
1 2013-10-02
2 2013-10-03
3 2013-10-04
4 2013-10-05
5 2013-10-06
6 2013-10-07
7 2013-10-08
8 2013-10-09
9 2013-10-10
dtype: datetime64[ns]
这里有一个方法:
pd.to_datetime((df['y']*10000 + df['m']*100 + df['d']).astype(str))
Out:
0 2013-10-01
1 2013-10-02
2 2013-10-03
3 2013-10-04
4 2013-10-05
5 2013-10-06
6 2013-10-07
7 2013-10-08
8 2013-10-09
9 2013-10-10
dtype: datetime64[ns]
发件人:
代码:
发件人:
代码:
我认为apply是你的朋友:我认为apply是你的朋友:
In [135]: pd.to_datetime(df.rename(columns={'y':'Year','m':'Month','d':'Day'}).iloc[:, :3])
Out[135]:
0 2013-10-01
1 2013-10-02
2 2013-10-03
3 2013-10-04
4 2013-10-05
5 2013-10-06
6 2013-10-07
7 2013-10-08
8 2013-10-09
9 2013-10-10
dtype: datetime64[ns]