时间:2021-05-22
在对excel的操作中,调整列的顺序以及添加一些列也是经常用到的,下面我们用pandas实现这一功能。
(1)直接添加
>>> df['E']=[1, 2]>>> df A B C D E0 bob 12 78 87 11 millor 15 92 21 2(2)调用assign方法。该方法善于根据已有的列添加新的列,通过基本运算,或者调用函数
>>> df A B C D0 bob 12 78 871 millor 15 92 21# 其中E是列名,根据B列-C列的值得到>>> df.assign(E=df['B'] - df['C']) A B C D E0 bob 12 78 87 -661 millor 15 92 21 -77# 添加两列也可以>>> df.assign(E=df['B'] - df['C'], F=df['B'] * df['C']) A B C D E F0 bob 12 78 87 -66 9361 millor 15 92 21 -77 1380哈哈,以上就是pandas关于调整列的顺序以及新增列的用法
补充:pandas修改DataFrame中的列名&调整列的顺序
直接调用接口:
df.rename()看一下接口中的定义:
def rename(self, *args, **kwargs): """ Alter axes labels. Function / dict values must be unique (1-to-1). Labels not contained in a dict / Series will be left as-is. Extra labels listed don't throw an error. See the :ref:`user guide <basics.rename>` for more. Parameters ---------- mapper, index, columns : dict-like or function, optional dict-like or functions transformations to apply to that axis' values. Use either ``mapper`` and ``axis`` to specify the axis to target with ``mapper``, or ``index`` and ``columns``. axis : int or str, optional Axis to target with ``mapper``. Can be either the axis name ('index', 'columns') or number (0, 1). The default is 'index'. copy : boolean, default True Also copy underlying data inplace : boolean, default False Whether to return a new DataFrame. If True then value of copy is ignored. level : int or level name, default None In case of a MultiIndex, only rename labels in the specified level. Returns ------- renamed : DataFrame See Also -------- pandas.DataFrame.rename_axis Examples -------- ``DataFrame.rename`` supports two calling conventions * ``(index=index_mapper, columns=columns_mapper, ...)`` * ``(mapper, axis={'index', 'columns'}, ...)`` We *highly* recommend using keyword arguments to clarify your intent. >>> df = pd.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]}) >>> df.rename(index=str, columns={"A": "a", "B": "c"}) a c 0 1 4 1 2 5 2 3 6 >>> df.rename(index=str, columns={"A": "a", "C": "c"}) a B 0 1 4 1 2 5 2 3 6 Using axis-style parameters >>> df.rename(str.lower, axis='columns') a b 0 1 4 1 2 5 2 3 6 >>> df.rename({1: 2, 2: 4}, axis='index') A B 0 1 4 2 2 5 4 3 6 """ axes = validate_axis_style_args(self, args, kwargs, 'mapper', 'rename') kwargs.update(axes) # Pop these, since the values are in `kwargs` under different names kwargs.pop('axis', None) kwargs.pop('mapper', None) return super(DataFrame, self).rename(**kwargs)注意:
一个*,输入可以是数组、元组,会把输入的数组或元组拆分成一个个元素。
两个*,输入必须是字典格式
示例:
>>>import pandas as pd>>>a = pd.DataFrame({'A':[1,2,3], 'B':[4,5,6], 'C':[7,8,9]})>>> a A B C0 1 4 71 2 5 82 3 6 9 #将列名A替换为列名a,B改为b,C改为c>>>a.rename(columns={'A':'a', 'B':'b', 'C':'c'}, inplace = True)>>>a a b c0 1 4 71 2 5 82 3 6 9如:
>>> 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_id0 3713327 2017-03-07 4 webbang1 4074636 2017-03-07 4 webbang2 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_date0 webbang 3713327 4 2017-03-071 webbang 4074636 4 2017-03-072 webbang 26873486 4 2017-03-07就可以了。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
处理word编号后面空格的方法: 1、选择你需要调整的段落,即将光标移到要调整的段落处,右键点击。选择“调整列表缩进”; 2、在弹出的“调整列表缩进量”窗口
在EXCEL中有时候格子小了,输入的文字显示不全,可以调整列宽。那么在EXCEL中怎么调整列宽?下面小编就为大家详细介绍一下,来看看吧!软件名称:Excel20
在EXCEL中有时候格子小了,输入的文字显示不全,可以调整列宽。那么在EXCEL中怎么调整列宽?下面就为大家详细介绍一下,来看看吧! 方法/步骤 打开空
Word表格如何巧调列宽,下面介绍具体方法: 在编辑Word表格时,大家通常都是拖动表格线来调整列宽。其实,如果在拖动表格线时,配合使用不同的按键,可以达
一、pandas对整列赋值这个比较正常,一般直接赋值就可以:x=pd.DataFrame({'A':['1','2','3',None,None],'B':['