在数据处理过程中,经常要对符合某种条件的行列进行操作,有时候会犯迷糊,这里详细解释一下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写于滨州市太阳花咖啡书屋