python列索引行的数据公式_Pandas——数据帧——获取索引、列名、值、列信息、行信息、LOC函数和iloc函数,结构化,DataFrame,index,值列...

这篇博客详细介绍了如何在Python的Pandas库中操作DataFrame数据,包括获取索引、列名、值,以及利用loc和iloc函数进行行、列选择。内容涉及行数、列数的获取,数据的前几行和后几行展示,以及通过键值和切片方式获取特定列和行的信息。
摘要由CSDN通过智能技术生成

如果你对DataFrame(df)数据类型还不是很熟悉,建议先阅读另一篇基础博文:

Pandas—结构化数据(DataFrame)来源 & 转成字典(dict)

如下内容如提到df,都代表的是DataFrame的结构化数据

1.单独获取df里面的三个部分index/colume/values

在推荐的博文里面,我们已经介绍了,如何把df数据转化为一个包含三个key的大字典。

https://blog.csdn.net/chenmozhe22/article/details/108095974

那么如果只是想获取某一部分,如何获取呢?

from pandas.core.frame import DataFrame as df

data_all = {"trade_date": ['20200818', '20200818', '20200818', '20200818', '20200818', '20200818'],

"ts_code": ['600030.SH', '600118.SH', '600276.SH', '600519.SH', '600887.SH', '601012.SH'],

"name": ['中信证券', '中国卫星', '恒瑞医药', '贵州茅台', '伊利股份', '隆基股份']}

index = ['a', 'b', 'c', 'd', 'e', 'f']

date_frame = df(data_all, index=index)

print(date_frame.index.tolist())# 只获取df的索引列表

print(date_frame.columns.tolist())# 只获取df的列名列表

print(date_frame.values.tolist())# 只获取df的所有值的列表(二维列表)

['a', 'b', 'c', 'd', 'e', 'f']

['trade_date', 'ts_code', 'name']

[['20200818', '600030.SH', '中信证券'], ['20200818', '600118.SH', '中国卫星'], ['20200818', '600276.SH', '恒瑞医药'], ['20200818', '600519.SH', '贵州茅台'], ['20200818', '600887.SH', '伊利股份'], ['20200818', '601012.SH', '隆基股份']]

2.获取df的行数/列数 & 前几行 & 后几行

from pandas.core.frame import DataFrame as df

data_all = {"trade_date": ['20200818', '20200818', '20200818', '20200818', '20200818', '20200818'],

"ts_code": ['600030.SH', '600118.SH', '600276.SH', '600519.SH', '600887.SH', '601012.SH'],

"name": ['中信证券', '中国卫星', '恒瑞医药', '贵州茅台', '伊利股份', '隆基股份']}

index = ['a', 'b', 'c', 'd', 'e', 'f']

date_frame = df(data_all, index=index)

print(date_frame)# 打印完整显示的效果

print(date_frame.shape)# 获取df的行数、列数元祖

print(date_frame.head(2))# 前2行

print(date_frame.tail(2))# 后2行

trade_date ts_code name

a 20200818 600030.SH 中信证券

b 20200818 600118.SH 中国卫星

c 20200818 600276.SH 恒瑞医药

d 20200818 600519.SH 贵州茅台

e 20200818 600887.SH 伊利股份

f 20200818 601012.SH 隆基股份

(6, 3)

trade_date ts_code name

a 20200818 600030.SH 中信证券

b 20200818 600118.SH 中国卫星

trade_date ts_code name

e 20200818 600887.SH 伊利股份

f 20200818 601012.SH 隆基股份

3.获取列信息

1.键值索引方式

# date_frame获取部分省略,与上文一致

print(date_frame["name"])# 只获取某列的值,使用一维数组

print("="*100)

print(date_frame[["name", "ts_code"]])# 获取多列的值,必须使用二维数组

a 中信证券

b 中国卫星

c 恒瑞医药

d 贵州茅台

e 伊利股份

f 隆基股份

Name: name, dtype: object

=========================================================================

name ts_code

a 中信证券 600030.SH

b 中国卫星 600118.SH

c 恒瑞医药 600276.SH

d 贵州茅台 600519.SH

e 伊利股份 600887.SH

f 隆基股份 601012.SH

2.切片方式

# date_frame获取部分省略,与上文一致

print(date_frame[date_frame.columns[:2]])

print("="*100)

print(date_frame[date_frame.columns[-2:]])

trade_date ts_code

a 20200818 600030.SH

b 20200818 600118.SH

c 20200818 600276.SH

d 20200818 600519.SH

e 20200818 600887.SH

f 20200818 601012.SH

============================================================================

ts_code name

a 600030.SH 中信证券

b 600118.SH 中国卫星

c 600276.SH 恒瑞医药

d 600519.SH 贵州茅台

e 600887.SH 伊利股份

f 601012.SH 隆基股份

4.获取行信息

1.键值索引方式

print(date_frame["a":"c"])# 行索引a---->c ,包含b索引行号

trade_date ts_code name

a 20200818 600030.SH 中信证券

b 20200818 600118.SH 中国卫星

c 20200818 600276.SH 恒瑞医药

2.切片方式

print(date_frame[:2])# 获取前2行数据

print("=" * 100)

print(date_frame[-2:])# 获取后2行数据

trade_date ts_code name

a 20200818 600030.SH 中信证券

b 20200818 600118.SH 中国卫星

=============================================================================

trade_date ts_code name

e 20200818 600887.SH 伊利股份

f 20200818 601012.SH 隆基股份

5.loc函数(行键值、列键值)

loc函数,也是获取行信息、列信息的功能。但它又不止于此,还可以指定某个某列去获取,这个才是它的核心功能。

loc(行信息,列信息)

行信息的方式:

line_key_1:line_key_2

line_key_1

列信息的方式:

col_key_1:col_key_2

col_key_1

loc函数对应的区间,都是前闭后闭(区间开始和结束,都包含的),看看后面的案例慢慢体会

1.获取行信息

df_new = date_frame.loc["a":"c"] # 行索引a---->c ,包含b索引行号

# df_new = date_frame.loc["a"] # 只获取a行的信息

print(df_new)

trade_date ts_code name

a 20200818 600030.SH 中信证券

b 20200818 600118.SH 中国卫星

c 20200818 600276.SH 恒瑞医药

2.获取列信息

df_new = date_frame.loc[:, "trade_date":"name"]# 获取trade_date----->name列的信息,包含ts_code列信息,这个有点类似如上的a----->c ,但是包含了b

# df_new = date_frame.loc[:, "trade_date"] # 只获取trade_date列的信息,包含所有行

print(df_new)

trade_date ts_code name

a 20200818 600030.SH 中信证券

b 20200818 600118.SH 中国卫星

c 20200818 600276.SH 恒瑞医药

d 20200818 600519.SH 贵州茅台

e 20200818 600887.SH 伊利股份

f 20200818 601012.SH 隆基股份

注意点:

只取列的时候,需要把行的索引表达出来,用空索引(:)即可,然后逗号后面添加列索引的信息

3.指定某行&某列的值

有点类似excel表格的xx行xxx列的值

df_new = date_frame.loc["a":"c", "trade_date":"ts_code"]# a--->c行索引,且trade_date--->ts_code列的数据

print(df_new)

trade_date ts_code

a 20200818 600030.SH

b 20200818 600118.SH

c 20200818 600276.SH

6.iloc函数(行切片、列切片)

iloc函数,也是获取行信息、列信息的功能。但它也有自己的特色,主要是通过切片的形式获取行信息和列信息。

iloc(行信息,列信息)

行信息的方式:

line_index_1:line_index_2

line_index_1

[line_index_1, line_index_3]

列信息的方式:

col_index_1:col_index_2

col_index_1

[col_index_1, col_index_2]

iloc函数对应的区间,都是前闭后开(区间开始包含,后面不包含的),看看后面的案例慢慢体会

1.获取行信息

df_new = date_frame.iloc[0:2]# 支持切片的步幅,例如[0:6:2],开始到结束,间隔取值

print(df_new)

trade_date ts_code name

a 20200818 600030.SH 中信证券

b 20200818 600118.SH 中国卫星

2.获取列信息

df_new = date_frame.iloc[:, 0:2]

print(df_new)

trade_date ts_code

a 20200818 600030.SH

b 20200818 600118.SH

c 20200818 600276.SH

d 20200818 600519.SH

e 20200818 600887.SH

f 20200818 601012.SH

3.获取指定行 & 指定列

df_new = date_frame.iloc[0:3, 0:2]# 前3行中的,前2列的信息

print(df_new)

trade_date ts_code

a 20200818 600030.SH

b 20200818 600118.SH

c 20200818 600276.SH

4.获取指定行 & 指定列(2)

df_new = date_frame.iloc[[0, 3], [0, 2]]# 获取索引为0 和 3的行,对应的索引为0列和2列值

print(df_new)

trade_date name

a 20200818 中信证券

d 20200818 贵州茅台

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值