Python:如何避免循环在 Pandas 数据框中进行转换?

标签 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    10  9   27.7
9   2013    10  10  25.9

其中ymd分别对应年月日。我想聚合它们并转换为 datetime

df['date'] =  0
for v in df.index:
    df['date'][v] = datetime.datetime(df.y[v], df.m[v], df.d[v])

我想知道避免该循环的最佳方法是什么

最佳答案

来自 docstring :

Assembling a datetime from multiple columns of a DataFrame. The keys can be
common abbreviations like ['year', 'month', 'day', 'minute', 'second',
'ms', 'us', 'ns']) or plurals of the same

>>> df = pd.DataFrame({'year': [2015, 2016],
                       'month': [2, 3],
                       'day': [4, 5]})
>>> pd.to_datetime(df)
0   2015-02-04
1   2016-03-05
dtype: datetime64[ns]

代码:

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]

关于Python:如何避免循环在 Pandas 数据框中进行转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40596465/

相关文章:

python - 从 PIL 图像或 StringIO 将图像插入 Reportlab

c# - Mac OSX 上的 .Net C# 日期时间与 Debian Linux 上的比较

python - df.groupby(.pdGrouper(freq ='D' ) ).idxmax 抛出 ValueError

python - 如何按定义元素的长度将包含 NaN 的 Series 分成两部分?

python - 如果行与 pandas 中的头部不匹配,如何删除行?

Python:非捕获组在正则表达式中不起作用

python - Django 中的内页表单

python - 当枚举值是元组时从字符串获取枚举对象?

javascript - 无法从asp.net页面中的jquery日期时间选择器捕获日期时间值(C#)

python pandas 选择两列(不)相等的行