【发布时间】:2019-12-17 14:37:57
【问题描述】:
我想将 [dataset][1] 中的三列合并为一列。我是这样做的:
from datetime import date
data['DATE'] = data.apply(lambda x: date(int(x['Yr']), int(x['Mo']), int(x['Dy'])), axis=1)
然后我删除了“Yr”、“Mo”、“Dy”这三列。 问题是我得到了这样的东西:
DATE
0061-01-01
0061-01-02
0061-01-03
0061-01-04
0061-01-05
,我希望它是这样的:
DATE
1961-01-01
1961-01-02
1961-01-03
1961-01-04
1961-01-05
因此,在创建“日期”列之前,我必须手动将两位数“年”列转换为四位数字。
def yr_fx(df):
for i in range(len(df['Yr'])):
df['Yr'][i] = '19'+str(df['Yr'][i])`
我创建了上述函数来为我完成这项工作,但问题是执行时间太长,比如 2 到 3 分钟。它还显示了这个警告:
C:\Users\abc\Anaconda3\lib\site-packages\ipykernel_launcher.py:3: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame
See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
This is separate from the ipykernel package so we can avoid doing imports until
我想知道这样做的有效方法。
【问题讨论】:
-
您的列是否采用以下格式
Yr = 61Mo = 12Dy=15? -
Yr、Mo、Dy是列名,是的。
-
请不要使用图片,请提供数据框的文本示例。阅读How to Ask 和minimal reproducible example
-
@Datanovice 我一定会这样做的。
-
试一试并编辑这个问题,我会修改我的反对票以支持赞成票,记住人们需要文本示例来在他们自己的环境中进行测试。祝你好运。
标签: python pandas dataframe datetime