三、 数据框行列更改

1 设置索引:

df.set_index('xxx')

2 重置索引(行号):

df.reset_index(drop = True, inplace = True) # drop = True:原有索引就不会成为新的列

3 更改列名:

#方法一:直接法
df.columns = ['col1', 'col2', 'col3']

#方法二:(使用rename()函数:修改指定修改某列或某几列名字)
df.rename(columns={'0':'col1', '1':'col2', '2':'col3'}, inplace=True)

4 更改列序:

(1)将三列倒序:

#方法一:
df.iloc[:, ::-1]

#方法二
df.iloc[:, [-1,-2,-3]]

(2)交换两列位置:

#方法一
temp = df['popularity']
df.drop(labels=['popularity'], axis=1, inplace=True)
df.insert(0, 'popularity', temp)
df

#方法二:直接法,更改取列顺序
cols = df.columns[[1,0]]
df = df[cols]
df

(3)更改全部列排序:

order = ['xxx3', 'xxx1', 'xxx2']
df = df[order]

5 删除行列:

(1)DataFrame.drop用法:

''' 
DataFrame.drop(axis=0, how='any', thresh=None, subset=None, inplace=True)
    axis=0 行;axis=1 列;
    how:{'any', 'all'} -- 'any':存在NA值就删除该行/列;'all':所有值为NA才删除;
    thresh:int保留含有int个非空值的行;
    subset:对特定的列进行缺失值删除处理;
    inplace:False-返回新的数据集(默认),True-在原数据集上操作
'''

(2)删除最后一列:

#方法一:
del df['categories']

#方法二:
df.drop('categories',axis=1, inplace=True) #columns=['xxx']

#方法三:
df.drop([df.columns[df.shape[1]-1]], axis=1,inplace=True)

(3)删除某列所有为非数字的行:

# 先定义一个数组,存储非数字的索引,然后再drop()
k = []
for i in range(len(data)):
    if type(data['换手率(%)'][i]) != float: #data['换手率(%)'][i]或写成data.iloc[i, 13]
        k.append(i)
data.drop(labels=k, inplace=True)
data

6 两列合并成新的一列:(直接相加减)

df['test'] = df['education'] + df['createTime'] # 两列均为字符串类型
df['test1'] = df['salary'].map(str) + df['education'] # salary为int类型,需转换为字符串类型;

7 反转数据框的行:

df.iloc[::-1, :]
# [::-1]表示步长为-1, 从后往前倒序输出

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数分小白龙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值