当我在python 2.7.10中创建pandas数据帧时,如下所示:
data = {'name': ['Jason', 'Molly', 'Tina', 'Jake', 'Amy'],
'year': [2012, 2012, 2013, 2014, 2014],
'reports': [4, 24, 31, 2, 3]}
df = pd.DataFrame(data, index = ['Cochice', 'Pima', 'Santa Cruz', 'Maricopa', 'Yuma'])
df
Out[48]:
name reports year
Cochice Jason 4 2012
Pima Molly 24 2012
Santa Cruz Tina 31 2013
Maricopa Jake 2 2014
Yuma Amy 3 2014
然后我把这个数据帧传递给一个新的数据帧。删除新数据帧中的列也会删除原始数据帧中的列,如下所示:
^{pr2}$我已经用了多个例子,而且行为是守恒的。我试图传递一个包含许多列的表,并且只删除干扰后续分析的两个列。但是,对于其他任务,我希望保留原始数据帧,这种递归样式的列删除正在阻止这一点。这太疯狂了!我相信我以前做过这件事,没有见过这种行为。在
下面的方法似乎有效,但更麻烦。在
df1 = DataFrame(data = df.values, columns = df.columns)
del df1['name']
df
Out[67]:
name reports year
Cochice Jason 4 2012
Pima Molly 24 2012
Santa Cruz Tina 31 2013
Maricopa Jake 2 2014
Yuma Amy 3 2014
最好的方法是什么?为什么会有区别?在
或者,您可以执行以下操作,这可能是更好的做法:
^{pr2}$这是Python,不是熊猫。当您分配
df
时,实际上是指向同一个对象,可以通过查看它们的内存位置来确认。在可以使用所需列创建新框架,如下所示:
^{pr2}$删除列以检查行为。在
相关问题 更多 >
编程相关推荐