df[条件][新增列名]与df.loc[条件][新增列名]区别(了解底层原因)

在数据处理过程中,经常要对符合某种条件的行列进行操作,有时候会犯迷糊,这里详细解释一下pandas是怎么识别df[]的.

df[<条件>]   # 得到的是一个新的df1,对其进行任何操作,对原来的df不产生影响.
type(df[<条件>])   # 数据类型是DataFrame
>> <class 'pandas.core.frame.DataFrame'>


df['列名']   # 得到的是df中'列名'这一列,
type(df['列名'])   # 数据类型是series
>> <class 'pandas.core.series.Series'>

df['新列名'] = 0   # 原df发生改变,在df中添加新列,且新列取值为0

df[<条件>]['新增列名']=0   
# 这么写的本意是获取满足条件的新的df1,然后对新的df1增加新的一列,并将新的一列赋值为0,但此时会报错
# df[][] 这种结构,python会自动识别为获取Multiindex,具体见下图


=======================================================
=======================================================
df.loc[<条件>][<新增列名>]   
# 本质是一个函数.loc[row_index,col_index]有自己特定的语法规范
# df.loc[<条件>][<新增列名>]是想当然的,是不合语法的

当输入,

df[<条件>]['新增列名']=0

在这里插入图片描述

会出现上图提醒,并给出参考链接,意思是df[][]默认是寻求Multiindex多级索引.

在这里插入图片描述

此时不得不感慨一下Python的强大,其实此处Python直接提醒一下index错误就可以了,但是她没有偷懒,而是明白了你的意思,给你一个参考解决方案.

.

.

.

2018-11-26 18:48:39写于滨州市太阳花咖啡书屋

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值