Python数据分析基础:pandas抽行、抽列、抽行列。用到df[]、df.loc[]、df.iloc[]等

  初学者经常分不清何时用df[]、df.loc[]和df.iloc[],以及要不要先把检索词用[]括起来做成列表再传参,看完本文保准帮您彻底搞明白。
  以以下df为例。

data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
columns = ["A", "B", "C"]
df = pd.DataFrame(data=data, columns=columns)
"""
    A  B  C
0  1  2  3
1  4  5  6
2  7  8  9
"""


  在df[]、df.loc[]和df.iloc[]这3个可选项中,如果同时抽行列,就只能用df.loc[]或df.iloc[],df[]情况稍复杂。

1 抽列

1.1 抽1列(1)

kw = "A"
s = df[kw]
# 或直接写:s = df["A"]

  以上抽出“A”列。
  当然也可直接写s = df[“A”],分开写是为了加深印象,可以直接传入1个字符串取出对应列。结果如下:

0    1
1    4
2    7
Name: A, dtype: int64

  结果为“<class ‘pandas.core.series.Series’>”,一维。
  可以传[“A”]吗?

kw = ["A"]
s = df[kw]
# 或直接写:s = df[["A"]]
   A
0  1
1  4
2  7

  当然可以,返回类型为“<class ‘pandas.core.frame.DataFrame’>”,二维。
  请注意:df[]直接传入1个文本串的便利给了列了,抽行就不允许直接给df[]传入1个文本串了,哪怕行的索引名称与列的索引名称不同。在下述“抽行”中再详讲。
  用df.loc[]如何抽出“A”列?

s = df.loc[:, "A"]  # 得到Series
df1 = df.loc[:, ["A"]]  # 得到DataFrame

  同理如果用df.iloc[],这样写:

s = df.iloc[:, 0]  # 得到Series
df1 = df.iloc[:, [0]]  # 得到DataFrame

  用到了半角冒号即切片,牵涉到“抽行列”了,在下述“3 抽行列”部分会具体再讲。
  小小结:(1)df[“A”]或df.loc[:, “A”]或df.iloc[:, 0]:得到Series;(2)df[[“A”]]或df.loc[:, [“A”]]或df.iloc[:, [0]]:得到DataFrame。

s = df["A"]
s = df.loc[:, "A"]
s = df.iloc[:, 0]
"""
以上得到Series
"""
df1 = df[["A"]]
df1 = df.loc[:, ["A"]]
df1 = df.iloc[:, [0]]
"""
以上得到DataFrame
"""

1.2 抽指定单独多列(单多)

  可以一口气指定两列吗,比如“A”和“C”?返回值不可能有Series了,只能是DataFrame。

kw = "A", "C"  # 报错
df1 = df
  • 21
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值