Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x Pandas Dataframe:就地列替换与使用转换的列创建新的Dataframe_Python 3.x_Pandas_Dataframe - Fatal编程技术网

Python 3.x Pandas Dataframe:就地列替换与使用转换的列创建新的Dataframe

Python 3.x Pandas Dataframe:就地列替换与使用转换的列创建新的Dataframe,python-3.x,pandas,dataframe,Python 3.x,Pandas,Dataframe,每当我想要转换数据帧的现有列时,我倾向于使用apply/transform,这会给我一个全新的系列,并且不会修改数据帧中的现有列 假设下面的代码对一列执行操作并返回一个序列 new_col1 = df.col1.apply(...) 在此之后,我有两种在数据帧中替换新系列的方法 修改现有的col1: df.col1=new\u col1 或者使用转换的列创建新的数据帧: df.drop(columns=[col1]).join(new\u col1) 我这样问是因为每当我在类似python

每当我想要转换数据帧的现有列时,我倾向于使用
apply/transform
,这会给我一个全新的系列,并且不会修改数据帧中的现有列

假设下面的代码对一列执行操作并返回一个序列

new_col1 = df.col1.apply(...)
在此之后,我有两种在数据帧中替换新系列的方法

  • 修改现有的
    col1

    df.col1=new\u col1

  • 或者使用转换的列创建新的数据帧:

    df.drop(columns=[col1]).join(new\u col1)

  • 我这样问是因为每当我在类似python的列表中使用可变数据结构时,我总是尝试使用列表理解而不是就地替换来创建新的列表


    对于熊猫数据帧,采用这种样式有什么好处吗?什么更具python风格?您推荐上述两种方法中的哪一种?

    由于您要修改现有列,第一种方法会更快。请记住,
    drop
    join
    都会返回新数据的副本,因此,如果您有一个包含许多列的大数据框,那么第二种方法可能会很昂贵。

    每当您想对原始数据框本身进行更改时,考虑在 IsPosieTrime<代码>属性,默认情况下返回一个新的副本。 注意:请记住

    国内的反对者

    • 与名称所暗示的相反,inplace通常不会阻止副本的创建,而且(几乎)从未提供任何性能优势

    • inplace不使用方法链接

    • inplace是初学者常见的陷阱,因此删除此选项将简化API

      资料来源: