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中是没有数据的,如果输出就会看到:

a b c
0 NaN NaN NaN
1 NaN NaN NaN
2 NaN NaN NaN

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:

a b c
0 1 2 3
1 NaN NaN NaN
2 NaN NaN NaN

但是,我们需要将添加的数据数量控制好,不然就会出现这样的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

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐