pandas调整列的顺序以及添加列的实现

在对excel的操作中,调整列的顺序以及添加一些列也是经常用到的,下面我们用pandas实现这一功能。

1、调整列的顺序

>>> 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')
# 这是最简单常用的一种方法,相当于指定列名让pandas
# 从df中获取
>>> df[['A', 'D', 'C', 'B']]
  A D C B
0  bob 87 78 12
1 millor 21 92 15
# 这也是可以的
>>> df[['A', 'A', 'A', 'A']]
  A  A  A  A
0  bob  bob  bob  bob
1 millor millor millor millor

2、添加某一列或者某几列

(1)直接添加

>>> df['E']=[1, 2]
>>> df
  A B C D E
0  bob 12 78 87 1
1 millor 15 92 21 2

(2)调用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

哈哈,以上就是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 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

调整列的顺序:

如:

>>> 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

就可以了。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • pandas 颠倒列顺序的两种解决方案

    在数据预处理过程中可能需要将列的顺序颠倒,有两种方法. import numpy as np import pandas as pd df = pd.DataFrame(np.array(range(20)).reshape(4,5)) print(df) 原始dataframe如下: 0 1 2 3 4 0 0 1 2 3 4 1 5 6 7 8 9 2 10 11 12 13 14 3 15 16 17 18 19 1. 方法一 手动设置列名列表,应用在dataframe中(适合列名比较少的

  • pandas 按照特定顺序输出的实现代码

    df.groupby() 之后按照特定顺序输出,方便后续作图,或者跟其他df对比作图. ## 构造 pd.DataFrame patient_id = ['71835318256532', '87791375711', '66979212649388', '46569922967175', '998612492555522', '982293214194', '89981833848', '17912315786975', '4683495482494', '1484143378533', '5

  • Python pandas.DataFrame调整列顺序及修改index名的方法

    1. 从字典创建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.

  • Pandas中DataFrame交换列顺序的方法实现

    一.获取DataFrame列标签 import pandas as pd file_path = '/Users/Arithmetic/da-rnn-master/data/collectd67_power_after_test_smooth.csv' dataset = pd.read_csv(file_path) cols = list(dataset) ['ps_state-stopped', 'ps_state-running', 'ps_state-blocked', 'ps_stat

  • pandas中的DataFrame按指定顺序输出所有列的方法

    问题: 输出新建的DataFrame对象时,DataFrame中各列的显示顺序和DataFrame定义中的顺序不一致. 例如: import pandas as pd grades = [48,99,75,80,42,80,72,68,36,78] df = pd.DataFrame( {'ID': ["x%d" % r for r in range(10)], 'Gender' : ['F', 'M', 'F', 'M', 'F', 'M', 'F', 'M', 'M', 'M'],

  • pandas调整列的顺序以及添加列的实现

    在对excel的操作中,调整列的顺序以及添加一些列也是经常用到的,下面我们用pandas实现这一功能. 1.调整列的顺序 >>> 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') # 这是最简单常用的一种方法,

  • pandas选择或添加列生成新的DataFrame操作示例

    目录 如何向 pandas.DataFrame 添加新的列或行 选择某些列 选择某些列和行 添加新的列 更改某一列的值 补全缺失值 如何向 pandas.DataFrame 添加新的列或行 通过指定新的列名/行名来添加,或者用pandas.DataFrame的assign().insert().append()方法添加等方法. 这里,将描述以下内容. 将列添加到 pandas.DataFrame 通过指定新列名添加 用assign()方法添加/分配 用insert()方法添加到任意位置 使用 c

  • Python Pandas 修改表格数据类型 DataFrame 列的顺序案例

    目录 一.修改表格数据类型 DataFrame 列的顺序 1.1主要知识点 1.2创建 python 文件 1.3运行结果 二.Pandas 如何统计某个数据列的空值个数 2.1主要知识点 2.2创建 python 文件 2.3运行结果 三.Pandas如何移除包含空值的行 3.1主要知识点 3.2创建 python 文件 3.3运行结果 四.Pandas如何精确设置表格数据的单元格的值 4.1主要知识点 4.2创建 python 文件 4.3运行结果 一.修改表格数据类型 DataFrame

  • SQL Server 数据库调整表中列的顺序操作方法及遇到问题

    SQL Server 数据库中表一旦创建,我们不建议擅自调整列的顺序,特别是对应的应用系统已经上线,因为部分开发人员,不一定在代码中指明了列名.表是否可以调整列的顺序,其实可以自主设置,我们建议在安装后设置为禁止. 那么,如果确实需要调整某一列的顺序,我们是怎么操作的呢? 下面,我们就要演示一下怎么取消这种限制.当然,通过取消限制的演示,相信大家也知道了怎么添加限制了. 需求及问题描述 1)测试表 Test001 (2)更新前 (3)例如,需求为调整 SN5 和SN4的序列 点击保存时报错 修改

  • python DataFrame 修改列的顺序实例

    假设我有一个DataFrame(df)如下: name age id mike 10 1 tony 14 2 lee 20 3 现在我想把id 放到最前面,变成: id name age df_id = df.id df = df.drop('id',axis=1) df.insert(0,'id',df_id) 以上这篇python DataFrame 修改列的顺序实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们. 您可能感兴趣的文章: Python中datet

  • pandas把dataframe转成Series,改变列中值的类型方法

    使用 pd.Series把dataframe转成Series ts = pd.Series(df['Value'].values, index=df['Date']) 使用astype改变列中的值的类型,注意前面要有np df['列名'] = df['列名'].astype(np.int64) 以上这篇pandas把dataframe转成Series,改变列中值的类型方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们. 您可能感兴趣的文章: python panda

  • 如何使用pandas读取txt文件中指定的列(有无标题)

    最近在倒腾一个txt文件,因为文件太大,所以给切割成了好几个小的文件,只有第一个文件有标题,从第二个开始就没有标题了. 我的需求是取出指定的列的数据,踩了些坑给研究出来了. import pandas as pd # 我们的需求是 取出所有的姓名 # test1的内容 ''' id name score 1 张三 100 2 李四 99 3 王五 98 ''' test1 = pd.read_table("test1.txt") # 这个是带有标题的文件 names = test1[&

  • C#中GridView动态添加列的实现方法

    本文实例讲述了C#中GridView动态添加列的实现方法.分享给大家供大家参考.具体如下: protected void Page_Load(object sender, EventArgs e) { TemplateField mycustomField = new TemplateField(); //创建列实例 mycustomField.ShowHeader = true; // 设置属性 LinkButton lb = new LinkButton(); lb.Text = "Dele

  • C#中DataGridView动态添加行及添加列的方法

    本文实例讲述了C#中DataGridView动态添加行及添加列的方法.分享给大家供大家参考.具体如下: Datagridview添加列: DataGridViewTextBoxColumn acCode = new DataGridViewTextBoxColumn(); acCode.Name = "acCode"; acCode.DataPropertyName = "acCode"; acCode.HeaderText = "A/C Code&quo

随机推荐