如何复制带有pandas的列并更改名称?

2024-06-24 13:52:34 发布

您现在位置:Python中文网/ 问答频道 /正文

在Python 3和Pandas中,我有以下数据帧:

te.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 5541 entries, 0 to 5664
Data columns (total 13 columns):
DATA_LS               4118 non-null object
DATA_INCLUS           2957 non-null object
Proprietario          5541 non-null object
Nome_propriedade      5541 non-null object
Municipio             5525 non-null object
Estado                5533 non-null object
CNPJ_CPF_CEI          5541 non-null object
CNPJ_CPF_CEI_limpo    5541 non-null float64
Trab_Envolv           4529 non-null float64
Ramo_atividade        2840 non-null object
Localizacao           2734 non-null object
Cod_ativ              2975 non-null object
Tipo_lista            5541 non-null object
dtypes: float64(2), object(11)
memory usage: 606.0+ KB

请问,我如何在这个数据帧中创建一个新列,其中包含列“CNPJ_CPF_CEI_limpo”的副本?具有相同的行和数据,但有另一个名称,例如“New_column_tests”


Tags: columns数据infopandasdataobjectnullclass
2条回答

Java代码创建一个缓冲读取器和一个输入流读取器。这两种方法都保证使用大块内存,直到垃圾回收器运行(可能直到程序退出!)才会释放内存

jewel = bin.readLine();

在java中,每个对的调用。readline将在堆上创建一个新字符串,赋值将把以前的字符串标记为“可释放”,但它将在内存中挂起,直到GC将其清除

C在内存管理方面做得很少。唯一可以分配内存块的行是gets,但它可能只使用控制台输入缓冲区,而不计入程序内存使用量

我想你是在拿苹果和桔子做果汁。重新编写C代码以使用垃圾收集和缓冲读取类,您可能会有一个等效的程序

""+stone.charAt(i)创建一个短期字符串对象。这会占用少量内存,最终会被垃圾收集器[*]释放

另一方面,您的C代码根本不分配任何内存

Java的垃圾收集器在需要时才开始工作。如果您的程序有超过177MB的可用内存,并且该程序通过创建177MB的短期对象进行翻腾,那么就这样吧。如果您开始耗尽内存,或者如果垃圾收集器注意到它可能正在运行的空闲时间,那么它将释放一些内存。因此,您的程序的内存使用可能会增长,以适应可用的内存

或者,即使内存仍然可用,GC也可以运行。如果GC被迫(例如)每10MB的分配运行一次,那么您会期望这段代码的内存使用量在10MB左右,所以我猜在这种情况下不会。在另一个JVM上可能会这样

[*]Java实现可以执行一个理论上的优化,注意到对对象的引用不会逃脱循环,然后以不同的方式分配/释放它以避免搅动GC。我猜这种情况在本例中没有发生,但值得知道的是,不同的JVM,或者具有不同选项的同一JVM,可能有非常不同的垃圾收集策略

相关问题 更多 >