dataframe选择、df.columns.str

1. df.iloc[1:4]、df.iloc[[1,3,4]]这都是取行

2. df还有一个xs方法,可以按照索引取行或列,df.xs(1)默认是用行索引去取,df.xs('a',axis=1)就是按列索引去取

3. df.iat[1,2]取某一个df中某一个元素,等价于df.iloc[1,2]

4. df.at[2,'a']按照index取某个元素,等价有df.loc[2,'a']

5. df['a'][df['a'] >= 3] = 4这种赋值方法是可以的,但是会报setting warning,可以用df.loc[df['a'] >= 3,'a'] = 4进行赋值,另外df[df['a'] >= 3]['a']可以get但是df[df['a'] >= 3]['a'] = 4赋值不成功

6. df.iloc[[1,2,99]]如果99这个位置是超过范围的,会报错,但是如果是按照索引get,比如df.loc[1,2,99],没有99这个索引会取出来一排全部值为NaN的行,但是用df.loc[99]单独取会报错

7. 用mask筛选,df[mask],这个时候mask的length必须和行数相等,是对行进行筛选

8. df['a']、df[['a','b']]本身都是取列,df[0]会报错(假设没有index为0的列),但是df[1:3]使用切片就可以取行

9. pd.Series、Index、columns(也是index的一种)配备了一套str处理的方法,Series.str.startswith()、Series.str.upper()等等

10. 如果有一个列的mask(length自然等于列长度),要进行筛选的话,可以用df.loc[:,mask]或者df.iloc[:,mask],但是如果这个mask是筛选行,则必须使用df.loc[mask,'a'],df.iloc[mask,'a']会报错,iloc行不支持mask

11. 综上其实这种简写,程序内部的处理也比较灵活,最好的,最不容易混淆的办法就是使用loc和iloc





留言

熱門文章