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重新定义,但它没有用.
有什么建议?提前致谢
注意这用于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)