Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.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 有没有一种方法可以在不复制列表的情况下从列表创建单列数据帧?_Python_List_Pandas - Fatal编程技术网

Python 有没有一种方法可以在不复制列表的情况下从列表创建单列数据帧?

Python 有没有一种方法可以在不复制列表的情况下从列表创建单列数据帧?,python,list,pandas,Python,List,Pandas,假设我有以下代码: import pandas as pd mylist = [item for item in range(100000)] df = pd.DataFrame() df["col1"] = mylist mylist中的数据分配给df[“col1”]时是否被复制?如果是这样,有没有办法避免这种复制 编辑:在本例中,我的列表是字符串列表。从这些答案中我得到的一件事是,如果我改为创建这些字符串的numpy数组,则不会发生数据重复,我调用df[“col1”]=mynparray

假设我有以下代码:

import pandas as pd

mylist = [item for item in range(100000)]
df = pd.DataFrame()
df["col1"] = mylist
mylist
中的数据分配给
df[“col1”]
时是否被复制?如果是这样,有没有办法避免这种复制


编辑:在本例中,我的列表是字符串列表。从这些答案中我得到的一件事是,如果我改为创建这些字符串的numpy数组,则不会发生数据重复,我调用
df[“col1”]=mynparray

当您将列表分配给一个系列时,将创建一个新的numpy数组。这种数据结构允许对数值类型进行矢量化计算。这样的系列被放置在连续的内存块中。有关更多详细信息,请参阅

因此,您将需要足够的内存来保存重复的数据。这是不可避免的。无法将列表“转换”为现有的熊猫系列


注意:上述内容与将NumPy数组分配给序列时发生的情况无关。

pd.DataFrame({'col1':mylist})
df=pd.DataFrame(mylist,columns=[“col1”])
您的预期输出是什么,df中的值不再受
mylist
更改的影响?这只是一个
浅拷贝
mylist
中的任何更改都不会影响数据帧
df
。但对我来说,显而易见的问题是,这些值是否以数组开头,以及df中的值是否是同一个对象。我正要测试它,但我认为这可能是问题的核心。列表中的值和系列中的值不能是同一个对象。它们不可能是这样的,因为它们必须以完全不同的内存布局进行布局。首先,在
float
int
数组中没有指针,而在Python列表中却有指针<代码>df=pd.数据帧(a)
a[0]=15
但是
a
不是这里的列表@roganjosh,是的,在我们仔细考虑你的问题时,我已经更新了答案。