Pandas问题二

【问题一】 如何更改列或行的顺序?如何交换奇偶行(列)的顺序?

df.reindex(index=[5,2,3,1,4], columns=['Height','Weight'])
r_col = list(df.columns.values)
for i,j in enumerate(r_col):
    if(i%2==1):
        r_col[i-1] = j;
        r_col[i]=tmp;
    tmp = j;
print(r_col)
df.reindex(columns=r_col)

【问题二】 如果要选出DataFrame的某个子集,请给出尽可能多的方法实现。

  • df.loc()
  • df.iloc()
  • df[]
  • df.query()

【问题三】 query函数比其他索引方法的速度更慢吗?在什么场合使用什么索引最高效?

  • query 函数比其他索引方法更快,可以避免潜在的数据在不同内存缓存间的移动,节省内存,语法简洁。
  • 当 DataFrame 占用内存较多时,推荐使用 eval()/query()

【问题四】 单级索引能使用Slice对象吗?能的话怎么使用,请给出一个例子。

  • 可以
idx = pd.IndexSlice
df.loc[idx[df['Math']>60]]
df.loc[idx[1]:]

【问题五】 如何快速找出某一列的缺失值所在索引?

df_f = pd.DataFrame({'A':[10,2,3,100,-1]},index=[1,2,6,5,7])
df_f['B'] = list('abbc1')
df_f = df_f.assign(C = pd.Series(list('deff')))
df_f[df_f['C'].isnull()].index[0]
np.where(df_f['C'].isnull())

【问题六】 索引设定中的所有方法分别适用于哪些场合?怎么直接把某个DataFrame的索引换成任意给定同长度的索引?

df = pd.read_csv('data/table.csv',index_col='ID').sort_index()
df.reindex(index=[1101,1203,1204,1206,2402,1205],method='bfill')
df.reset_index()
df.set_index(keys='列名')
df.set_index(pd.Series(np.random.randint(0,100,df.shape[0])))

【问题七】 对于多层索引,怎么对内层进行条件筛选?

df_s.loc[idx['B':,df_s.iloc[:,0]>0.6],:]

【问题八】 swaplevel中的axis参数为1时,代表什么意思?i和j只能是数值型吗?

axis = 1表示对columns操作
axis = 0表示对index操作
if axis == 0:
     result.index = result.index.swaplevel(i, j)
else:
     result.columns = result.columns.swaplevel(i, j)
i 和 j可以是string类型
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值