pandas调整列的顺序以及添加列的实现
本文介绍在pandas中如何调整DataFrame的列顺序、添加新列以及修改列名。通过直接指定列名列表实现重排,利用直接赋值或assign方法添加单列或多列,并使用rename接口修改列名。
调整列的顺序
在数据处理过程中,经常需要按照特定的顺序排列DataFrame的列。最简单且常用的方法是直接指定列名列表,让pandas从原数据中提取并重新排列。
>>> import pandas as pd
>>> df = pd.read_excel(r'D:/myExcel/1.xlsx')
>>> df
A B C D
0 bob 12 78 87
1 millor 15 92 21
>>> df.columns
Index(['A', 'B', 'C', 'D'], dtype='object')
# 指定列名顺序,相当于从df中获取指定列
>>> df[['A', 'D', 'C', 'B']]
A D C B
0 bob 87 78 12
1 millor 21 92 15此外,还可以重复指定某一列,从而生成包含多列相同数据的DataFrame:
>>> df[['A', 'A', 'A', 'A']]
A A A A
0 bob bob bob bob
1 millor millor millor millor添加某一列或者某几列
在pandas中,可以直接通过赋值操作添加新列,或者使用assign方法基于已有列进行运算并生成新列。
直接赋值添加列
最直接的方式是通过列名直接赋值:
>>> df['E']=[1, 2]
>>> df
A B C D E
0 bob 12 78 87 1
1 millor 15 92 21 2使用assign方法添加列
assign方法支持基于已有列进行基本运算,并可以一次性添加多列:
>>> df
A B C D
0 bob 12 78 87
1 millor 15 92 21
# 其中E是列名,根据B列-C列的值得到
>>> df.assign(E=df['B'] - df['C'])
A B C D E
0 bob 12 78 87 -66
1 millor 15 92 21 -77
# 添加两列也可以
>>> df.assign(E=df['B'] - df['C'], F=df['B'] * df['C'])
A B C D E F
0 bob 12 78 87 -66 936
1 millor 15 92 21 -77 1380修改列名
修改列名可以直接调用rename接口。该方法支持两种调用方式:使用关键字参数传入字典,或使用axis参数指定轴。
>>>import pandas as pd
>>>a = pd.DataFrame({'A':[1,2,3], 'B':[4,5,6], 'C':[7,8,9]})
>>> a
A B C
0 1 4 7
1 2 5 8
2 3 6 9
#将列名A替换为列名a,B改为b,C改为c
>>>a.rename(columns={'A':'a', 'B':'b', 'C':'c'}, inplace = True)
>>>a
a b c
0 1 4 7
1 2 5 8
2 3 6 9调整列的顺序(续)
当从字典创建DataFrame时,列名默认按首字母顺序排序,可能与字典中的先后顺序不一致。此时可以通过指定列名列表来调整顺序:
>>> import pandas
>>> dict_a = {'user_id':['webbang','webbang','webbang'],'book_id':['3713327','4074636','26873486'],'rating':['4','4','4'],
'mark_date':['2017-03-07','2017-03-07','2017-03-07']}
>>> df = pandas.DataFrame(dict_a) # 从字典创建DataFrame
>>> df # 创建好的df列名默认按首字母顺序排序,和字典中的先后顺序并不一样,字典中'user_id','book_id','rating','mark_date'
book_id mark_date rating user_id
0 3713327 2017-03-07 4 webbang
1 4074636 2017-03-07 4 webbang
2 26873486 2017-03-07 4 webbang通过指定列名列表,可以调整列顺序为期望的顺序:
>>> df = df[['user_id','book_id','rating','mark_date']] # 调整列顺序为'user_id','book_id','rating','mark_date'
>>> df
user_id book_id rating mark_date
0 webbang 3713327 4 2017-03-07
1 webbang 4074636 4 2017-03-07
2 webbang 26873486 4 2017-03-07以上就是pandas调整列的顺序以及添加列的详细内容,更多关于pandas列操作与数据处理的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









