创建的时候 , 如果指定了列标签 , 那么DataFrame的列也会按照指定的顺序进行排列 , 示例代码如下:
df=pd.DataFrame(data,columns=['C','B','A'],index=['a','b','c'])df
运行结果如图3-3所示 。
文章插图
▲图3-3
如果某列不存在 , 为其赋值 , 会创建一个新列 。我们可以用这种方法来添加一个新的列:
df['D']=10df
运行结果如图3-4所示 。文章插图
▲图3-4
使用del命令可以删除列 , 示例代码如下:
del df['D']df
运行结果如图3-5所示 。文章插图
▲图3-5
添加行的一种方法是先创建一个DataFrame , 然后再使用Append方法 , 代码如下:
new_df=pd.DataFrame({'A':'new','B':4000,'C':40},index=['d'])df=df.append(new_df)df
运行结果如图3-6所示 。文章插图
▲图3-6
或者也可以使用loc方法来添加行 , 示例代码如下:
df.loc['e']=['new2',5000,50]df
运行结果如图3-7所示 。文章插图
▲图3-7
loc方法将在后面的内容中详细介绍 。
索引的存在 , 使得Pandas在处理缺漏信息的时候非常灵活 。下面的示例代码会新建一个DataFrame数据df2 。
df2=pd.DataFrame([1,2,3,4,5],index=['a','b','c','d','z'],columns=['E'])df2
运行结果如图3-8所示 。文章插图
▲图3-8
如果现在想要合并df和df2 , 使得df有一个新的列E , 那么可以使用join方法 , 代码如下:
df.join(df2)
运行结果如图3-9所示 。文章插图
▲图3-9
可以看到 , df只接受索引已经存在的值 。由于df2中没有索引e , 所以是NaN值 , 而且df2索引为z的值已经丢失了 。为了保留df2中索引为z的值 , 我们可以提供一个参数 , 告诉Pandas如何连接 。示例代码如下:
df.join(df2,how='outer')
运行结果如图3-10所示 。文章插图
▲图3-10
在上述代码中 , how='outer'表示使用两个索引中所有值的并集 。连接操作的其他选项还有inner(索引的交集)、left(默认值 , 调用方法的对象的索引值)、right(被连接对象的索引值)等 。
在金融数据分析中 , 我们要分析的往往是时间序列数据 。下面介绍一下如何基于时间序列生成DataFrame 。为了创建时间序列数据 , 我们需要一个时间索引 。这里先生成一个DatetimeIndex对象的日期序列 , 代码如下:
dates=pd.date_range('20160101',periods=8)dates
输出结果如下:DatetimeIndex(['2016-01-01', '2016-01-02', '2016-01-03', '2016-01-04', '2016-01-05', '2016-01-06', '2016-01-07', '2016-01-08'],dtype='da tetime64[ns]', freq='D')
可以看到 , 使用Pandas的date_range函数生成的是一个DatetimeIndex对象 。date_range函数的参数及说明如下所示:- start:字符串/日期时间 | 开始日期;默认为None
- end:字符串/日期时间 | 结束日期;默认为None
- periods:整数/None | 如果start或者end空缺 , 就必须指定;从start开始 , 生成periods日期数据;默认为None
- freq:dtype | 周期;默认是D , 即周期为一天 。也可以写成类似5H的形式 , 即5小时 。其他的频率参数见下文
- tz:字符串/None | 本地化索引的时区名称
推荐阅读
- 世界上跳的最高的昆虫是什么 什么动物是世界上跳得最高的
- 世界上最长的水母 世界上最小的水母是什么水母
- 最早的灵长类动物 人是灵长类动物
- 世界上谁的尾巴最长动物 马的尾巴大约长多少厘米
- 海底最深的地方有什么怪物 隐藏海底的怪物
- 最毒的蚂蚁是哪种 世界上最毒的蚂蚁是什么蚂蚁
- 女人喝什么茶最养生,女人喝什么美容养颜
- 世界上寿命最长的海洋动物是 牛的最长寿命是多少岁
- 经科学家测试,流星体运动的最大速度 天文学家发现了一颗太阳系外行星
- 世界上已发现的矿物有近几种 地球上最古老的矿物是