如何合并日期列中的月日年列?

时间:2019-07-14 11:01:08

标签: python-3.x pandas

日期在单独的列中

Month   Day Year
8   12  1993
8   12  1993
8   12  1993

我想将其合并为一列

Date
8/12/1993
8/12/1993
8/12/1993

我尝试了

df_date = df.Timestamp((df_filtered.Year*10000+df_filtered.Month*100+df_filtered.Day).apply(str),format='%Y%m%d')

我收到此错误

AttributeError: 'DataFrame' object has no attribute 'Timestamp'

3 个答案:

答案 0 :(得分:0)

这是解决方案:

declare variable $value-separator as xs:string external := '|';

declare function local:distinct-descendants($elements as element()*) as xs:string*
{
    for $element-group in $elements[*]
    group by $element-name := node-name($element-group)
    return
        (
            let $groups :=
                for $descendant-group in $element-group//*
                group by
                    $path-key := string-join(($descendant-group/ancestor-or-self::* except $element-group/ancestor::*)/node-name(), '/'),
                    $value-key := string-join(($descendant-group/ancestor-or-self::* except $element-group/ancestor::*)/@value, $value-separator)
                return $path-key
            for $path-group in $groups
            group by $path-key := $path-group
            return $path-key || ' : ' || count($path-group)
            ,
            if ($element-group/*) then local:distinct-descendants($element-group/*) else ()
        )
};

local:distinct-descendants(root/*)

df = pd.DataFrame({'Month': [8, 8, 8], 'Day': [12, 12, 12], 'Year': [1993, 1993, 1993]}) # This way dates will be a DataFrame dates = df.apply(lambda row: pd.Series(pd.Timestamp(row[2], row[0], row[1]), index=['Date']), axis=1) # And this way dates will be a Series: # dates = df.apply(lambda row: # pd.Timestamp(row[2], row[0], row[1]), # axis=1) 方法生成新的applySeries,以迭代方式应用提供的函数(在这种情况下为DataFrame)并将结果合并。 您可以在official documentation中了解有关lambda方法的信息。 hereapply表达式的解释。

编辑: @JohnClements使用lambda方法提出了一个更好的解决方案:

pd.to_datetime

此外,如果您希望输出为字符串,则可以使用

dates = pd.to_datetime(df).to_frame('Date')

答案 1 :(得分:0)

apiVersion: v1 kind: ConfigMap metadata: name: test-config data: {{- (.Files.Glob "postman/**.json").AsConfig | nindent 2 }} pd.to_datetime一起使用

1。作为字符串类型:

astype(str)

2。作为df['Date'] = pd.to_datetime(df['Month'].astype(str) + df['Day'].astype(str) + df['Year'].astype(str), format='%d%m%Y').dt.strftime('%d/%m/%Y') Month Day Year Date 0 8 12 1993 08/12/1993 1 8 12 1993 08/12/1993 2 8 12 1993 08/12/1993 类型:

datetime

答案 2 :(得分:0)

您可以尝试:

df = pd.DataFrame({'Month': [8,8,8], 'Day': [12,12,12], 'Year': [1993, 1993, 1993]})
df['date'] = pd.to_datetime(df)

结果:

   Month  Day  Year       date
0      8   12  1993 1993-08-12
1      8   12  1993 1993-08-12
2      8   12  1993 1993-08-12

信息:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3 entries, 0 to 2
Data columns (total 4 columns):
Month    3 non-null int64
Day      3 non-null int64
Year     3 non-null int64
date     3 non-null datetime64[ns]
dtypes: datetime64[ns](1), int64(3)
memory usage: 176.0 bytes