pandas使用 - 取数据

发布时间 2023-09-18 23:41:23作者: yanghui01

涉及的几个类

pandas.core.frame.DataFrame:表示二维数据,比如:表格数据

pandas.core.series.Series:表示一维数据,比如:一行数据,或一列数据

 

取行用法

DataFrame[row_slice]

DataFrame.loc[rowName | rowName_slice | rowName_list]

DataFrame.iloc[row | row_slice | row_list]

取一行:

df[1], df.loc[1], df.iloc[1]

取连续多行:

df[0:3], df.iloc[0:3], df.loc[0:2]

取指定多行:

df.loc[[0, 2, 5]], df.iloc[[0, 2, 5]]

取所有行:

df, df.loc[:], df.iloc[:]

 

取列用法

DataFrame[colName | colName_list]

DataFrame.loc[colName | colName_slice | colName_list]

DataFrame.iloc[col | col_slice | col_list]

取一列:

df["id"], df.loc[:, "id"], df.iloc[:, 0]

取连续多列:

df.loc[:, "lv":"def"], df.iloc[:, 1:5]

取指定多列:

df[["lv", "move"]], df.loc[:, ["lv", "move"]], df.iloc[:, [1, 5]]

取所有列:

上面取行的用法都是包含所有列的

 

例子

用到的数据:data.xlsx数据

 

读取文件

import pandas as pd

df = pd.read_excel("./data.xlsx", index_col=None) # index_col表示哪一列作为索引列, 默认是额外加一个列, 用行号作为索引
print(type(df)) # <class 'pandas.core.frame.DataFrame'>, 表格类型数据

 

取一行

row = df.loc[1]  # 第2行数据,所有列
print(type(row)) # <class 'pandas.core.series.Series'>
print(row)

row = df.loc[1]
print(row) row = df.iloc[1]
print(row)

 

取连续多行

rows = df[0:3] # 第1至3行, 所有列
print(type(rows)) # <class 'pandas.core.frame.DataFrame'>
print(rows)

rows = df.iloc[0:3]
print(rows)

rows = df.loc[0:2] # 因为这里是loc[rowName_slice], 所以后面用的是2
print(rows)

 

取指定行

rows = df.loc[[0, 2, 5]]
print(type(rows))
print(rows)

rows = df.iloc[[0, 2, 5]]
print(rows)

 

取一列

col_name = df.columns[0]
rows = df[col_name] # 所有行数据, 只需要第1列(id)
print(type(rows)) # <class 'pandas.core.series.Series'>
print(rows)

col_name = "id"
rows = df[col_name] # 所有行数据, 只需要id列
print(rows)

rows = df.loc[:, "id"]
print(rows)

rows = df.iloc[:, 0]
print(rows)

 

取连续多列

rows = df.loc[:, "lv":"def"]
print(type(rows))
print(rows)

rows = df.iloc[:, 1:5]
print(rows)

 

取指定列

rows = df[["lv", "move"]]
print(type(rows))
print(rows)

rows = df.loc[:, ["lv", "move"]]
print(rows)

rows = df.iloc[:, [1, 5]]
print(rows)

 

取开头,结尾

head_rows = df.head(2)  # 开头2行数据
print(type(head_rows))  # <class 'pandas.core.frame.DataFrame'>
print(head_rows)

tail_rows = df.tail(2)  # 结尾2行数据
print(type(tail_rows))  # <class 'pandas.core.frame.DataFrame'>
print(tail_rows)

 

参考

Pandas中iloc、loc、ix、直接索引的用法和区别 (zhihu.com)