我正在学习使用熊猫,用它来进行一些数据分析.数据作为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的索引?
你可以在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
函数将date
和time
列组合成一timestamp
列并将其解析为时间戳.(熊猫很聪明,知道如何解析各种格式的日期)
index_col
将timestamp
列设置为索引.
usecols
告诉read_csv
函数只选择列的子集.