如何合并两个DataFrame列并将pandas.to_datetime应用于它?

Ale*_*chi 5 python pandas

我正在学习使用熊猫,用它来进行一些数据分析.数据作为csv文件提供,有几列,我只需要使用4(日期,时间,o,c).我想创建一个新的DataFrame,它使用DateTime64编号作为索引,这个数字是通过合并前两列来创建的,在合并的字符串上应用pd.to_datetime.

我的加载程序代码工作正常

st = pd.read_csv("C:/Data/stockname.txt", names=["date","time","o","h","l","c","vol"])
Run Code Online (Sandbox Code Playgroud)

挑战在于将加载的DataFrame转换为具有正确格式的新DataFrame.以下工作但很慢.而且,它只使用新的datetime64格式创建一个列,并且不会使它成为索引.

我的代码

st_new = pd.concat([pd.to_datetime(st.date + " " + st.time), (st.o + st.c) / 2, st.vol], 
     axis = 1, ignore_index=True)
Run Code Online (Sandbox Code Playgroud)

将两个列合并为一个更加pythonic的方法,并将一个函数应用到结果中?如何使新列成为DataFrame的索引?

Vik*_*kez 9

你可以在read_csv函数中做所有事情:

pd.read_csv('test.csv',
            parse_dates={'timestamp': ['date','time']},
            index_col='timestamp',
            usecols=['date', 'time', 'o', 'c'])
Run Code Online (Sandbox Code Playgroud)

parse_dates告诉read_csv函数将datetime列组合成一timestamp列并将其解析为时间戳.(熊猫很聪明,知道如何解析各种格式的日期)

index_coltimestamp列设置为索引.

usecols告诉read_csv函数只选择列的子集.