pandas 如何同时 *** 作多列

pandas 如何同时 *** 作多列,第1张

定义一个函数批量处理呗

比如df1['a']、df1['e']适用同样规则

def fun1:

    #定义apply内要用的函数(也可以不定义,使用lambda)

def fun2(src,columnList):

    dst = pd.DataFrame({}).append(src)

    for columnName in columnList:

        dst[columnName].apply(fun1)

    return dst

output = fun2(df1,['a','e'])

在Pandas的DataFrame中添加一行或者一列,添加行有 df.loc[] 以及 df.append() 这两种方法,添加列有 df[] 和 df.insert() 两种方法, 下面对这几种方法的使用进行简单介绍。

采用 loc[] 方法多适用于对空的dataframe循环遍历添加行,这样索引可以从0开始直到数据结果,不会存在索引冲突的问题。

不过在使用insert的过程中发现 454: DeprecationWarning: `input_splitter` is deprecated since IPython 7.0, prefer `input_transformer_manager`. status, indent_spaces = self.shell.input_splitter.check_complete(code) 这个提示,猜测是有别的地方出问题了,还需要调试。

主要参考资料:

上一节我们学习了 Series 结构的增删改查基本 *** 作,本节掌握 DataFrame 的增删改查将变得非常轻松~

首先,我们来构造一个 DataFrame :

查询指定列:

使用 loc 和 iloc 查询指定行:

此外, iloc 和 loc 还可以接收一个坐标,查询 DataFrame 的指定值或区域:

最后,还有经常使用的布尔索引:

修改指定值:

修改索引和列名:

增加一行内容:

增加多行内容(纵向拼接两个 DataFrame ),首先构造一个新的 DataFrame df2 :

拼接两个 DataFrame:

pd.concat 只做简单的拼接,即便是索引重复也不会覆盖:

通常,我们会使用 ignore_index=True 来重新生产数字索引:

为 df2 增加一列 DD :

如果是增加多列呢?同样的我们还是使用 pd.concat ,不过要将参数设置为 axis=1 。下面我们先构造一个两行两列的 DataFrame df4 :

拼接 df2 与 df4 :

删除上述 df5 中的 E 列和 F 列:

删除多列时,也可以使用 drop 方法,不过要指定 axis=1 :

也可以使用 drop 方法删除多行,删除行时使用默认参数 axis=0 即可:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11509172.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存