pd.DataFrame()

先来看看它的定义:

class DataFrame(
		data=None, 
		index: Optional[Axes]=None, # 行标
		columns: Optional[Axes]=None,  # 列标
		dtype: Optional[Dtype]=None,  # 存储的数据类型
		copy: bool=False)

我们可以直接创建空的dataframe,也可以在创造时就输入数据。
创建一个简单的dataframe:

import pandas as pd
aa = pd.DataFrame(index=range(3), 
		columns=['a', 'b', 'c'])

在这个dataframe中是没有数据的,如果输出就会看到:

abc
0NaNNaNNaN
1NaNNaNNaN
2NaNNaNNaN

loc()函数

那我们来详细的看一下loc()函数吧,它允许的输入有:

A single label, e.g. `5` or `‘a’`, (note that `5` is
interpreted as a label of the index, and never as an
integer position along the index).
A list or array of labels, e.g. `[‘a’, ‘b’, ‘c’]`.
A slice object with labels, e.g. `‘a’:‘f’`.

所以,我们可以向aa里面添加一些数据,简单的按行添加:

aa.loc[index] = 1, 2, 3
aa.loc[index] = (1, 2, 3)

这两种方式的添加结果都是一样的,if index == 0:

abc
0123
1NaNNaNNaN
2NaNNaNNaN

但是,我们需要将添加的数据数量控制好,不然就会出现这样的error:

ValueError: could not broadcast input array from shape (2,) into shape (3,)

除此之外,我们不仅可以向其中添加int型数据,还可以添加些奇奇怪怪的数据,比如:

aa.loc[0] = (0, (0.5,), (0.5,))

或者更复杂一点:

aa.loc[0] = ((0, (0.5,), (0.5,)), (0, 0.5), 0)

这个时候,这些数据就被存储到dataframe中了,但是会有一个warning,用来提醒你,如果想要存奇奇怪怪多种多样的数据类型,就需要在创建dataframe的时候,添加属性dtype=object,这样就不会有warning啦!
如果是按照列添加呢?
直接使用loc函数试试:

aa.loc['a'] = 0

然后,我发现,aa增加了一个新的行,index=‘a’,看来这个方法是不可行的,憨憨的我想起了这个方法类似于二维数组,所以,用一个新的方法试试:

aa.loc[:, 'a'] = 0

成功啦!他将column=‘a’的一列数据都变成了0。同时呢,我也发现,可以使用loc函数更改aa中每一个位置的值,只要你知道它的index和column。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐