Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:如何避免在数据帧中转换循环?_Python_Datetime_Pandas_Dataframe - Fatal编程技术网

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]