Pandas-数据结构-DataFrame(五):行&列同时索引【①:df.loc[[‘b‘, ‘c‘], [‘y‘, 8]];②:先列索引,再行索引;③:df.iloc[1:3, 2:6]】

Dataframe既有行索引也有列索引,可以被看做由Series组成的字典(共用一个索引)。

一、直接索引(先列后行,直接索引时只能通过索引名进行索引,不能通过下标)

Pandas-数据结构-DataFrame(五):行&列同时索引【①:df.loc[[‘b‘, ‘c‘], [‘y‘, 8]];②:先列索引,再行索引;③:df.iloc[1:3, 2:6]】
获取’2018-02-27’这天的’close’的结果

data['open']['2018-02-27']
23.53

data['2018-02-27']['open']

data[:1, :2]

二、提取 “目标行 & 目标列”:df.loc[[‘b’, ‘c’], [‘y’, 8]]

df =
     x   y   z   8   9
a NaN NaN NaN NaN NaN
b NaN NaN NaN NaN NaN
c NaN NaN NaN NaN NaN
d NaN NaN NaN NaN NaN
e NaN NaN NaN NaN NaN
  • df.loc[:, [‘y’, 8]]:提取第’y’、8列的所有行;
  • df.loc[:, ‘y’:8] :错误表达;
import numpy as np
import pandas as pd

df = pd.DataFrame(np.nan,
                  index=list('abcde'),
                  columns=['x', 'y', 'z', 8, 9])
print("df = \n", df)

print("-" * 100)

data1 = df.loc[['b', 'c']]
print("data1 = \n", data1)
print("-" * 50)
data2 = df.loc[:, ['y', 8]]
print("data2 = \n", data2)
print("-" * 50)
data3 = df.loc[['b', 'c'], ['y', 8]]
print("data3 = \n", data3)

打印结果:

df =
     x   y   z   8   9
a NaN NaN NaN NaN NaN
b NaN NaN NaN NaN NaN
c NaN NaN NaN NaN NaN
d NaN NaN NaN NaN NaN
e NaN NaN NaN NaN NaN
data2 =
     y   8
a NaN NaN
b NaN NaN
c NaN NaN
d NaN NaN
e NaN NaN
data1 = df['a'].loc[['one', 'three']] =
 one       9.835341
three    57.007146
Name: a, dtype: float64
data = df['a'] < 50 =
 one       True
two       True
three    False
four     False
Name: a, dtype: bool
data4 = df[df['a'] < 50].iloc[:2] =
 a    42.118455
b    92.361098
c    12.128027
d    58.962167
Name: two, dtype: float64

Process finished with exit code 0

四、行切片&列切片:df.iloc[1:3, 2:6]

根据位置和名称信息混搭的取数:对于一个DaraFrame,如果我想提取c行及其之前所有的,同时属于前4列的数呢?

iloc[num_of_row_start : num_of_row_end, num_of_column_start : num_of_column_end]

import numpy as np
import pandas as pd

df = pd.DataFrame(np.nan,
                  index=list('abcde'),
                  columns=['x', 'y', 'z', 8, 9])
print("df = \n", df)

print("-" * 100)

df_select = df.iloc[:df.index.get_loc('c') + 1, :4]
print("df_select = \n", df_select)

打印结果:

`python
df =
x y z 8 9
a NaN NaN NaN NaN NaN
b NaN NaN NaN NaN NaN
c NaN NaN NaN NaN NaN
d NaN NaN NaN NaN NaN
e NaN NaN NaN NaN NaN

Original: https://blog.csdn.net/u013250861/article/details/124029483
Author: u013250861
Title: Pandas-数据结构-DataFrame(五):行&列同时索引【①:df.loc[[‘b‘, ‘c‘], [‘y‘, 8]];②:先列索引,再行索引;③:df.iloc[1:3, 2:6]】

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/738446/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球