从Dataframe到Datestamp python3

ira*_*v94 1 timestamp dataframe python-3.x pandas

最近我遇到了一个非常奇怪的csv文件,有2列(带标题),一个用于日期,第二个用于价格.时间格式为"dd.mm.yyyy".

d = {'Date': [31.12.1991, 02.01.1992, 03.01.1992, 06.01.1992], 
     'Prices': [9.62, 9.5, 9.73, 9.45]}
df = pd.DataFrame(data=d)
prices = pd.DataFrame(df['Prices'])
date = pd.DataFrame(df['Date'])
date = date.to_string(header=True)
date = df.to_datetime(utc=True, infer_datetime_format=True)
frame = date.join(values)
print(df)
Run Code Online (Sandbox Code Playgroud)

我试图通过隔离日期列并尝试使用to_string()函数将其首先转换为字符串,然后使用to_datetime重新定义,但它没有用.

有什么建议?提前致谢

piR*_*red 5

有趣的方式来概括整个数据帧

注意这用于errors='ignore'跳过可能不适合解析为日期的列.但是,权衡的是,如果有一个列旨在被解析为日期但具有错误的日期值,则此方法将使该列保持不变.关键是要确保没有错误的日期值.

df.assign(
    **df.select_dtypes(exclude=[np.number]).apply(
        pd.to_datetime, errors='ignore', dayfirst=True
    )
)

        Date  Prices
0 1991-12-31    9.62
1 1992-01-02    9.50
2 1992-01-03    9.73
3 1992-01-06    9.45
Run Code Online (Sandbox Code Playgroud)

另一个例子

df = pd.DataFrame(dict(
    A=1, B='B', C='6.7.2018', D=1-1j,
    E='1.2.2017', F=pd.Timestamp('2016-08-08')
), [0])

df

   A  B         C       D         E          F
0  1  B  6.7.2018  (1-1j)  1.2.2017 2016-08-08
Run Code Online (Sandbox Code Playgroud)
df.assign(
    **df.select_dtypes(exclude=[np.number]).apply(
        pd.to_datetime, errors='ignore', dayfirst=True
    )
)

   A  B          C       D          E          F
0  1  B 2018-07-06  (1-1j) 2017-02-01 2016-08-08
Run Code Online (Sandbox Code Playgroud)

建立

从jezrael借来的

d = {'Date': ['31.12.1991', '02.01.1992', '03.01.1992', '06.01.1992'], 
     'Prices': [9.62, 9.5, 9.73, 9.45]}
df = pd.DataFrame(data=d)
Run Code Online (Sandbox Code Playgroud)