Python 为什么可以';我是否保留了一些变量并在熊猫中重命名变量?
我正在尝试获取数据帧[示例]:Python 为什么可以';我是否保留了一些变量并在熊猫中重命名变量?,python,pandas,dataframe,Python,Pandas,Dataframe,我正在尝试获取数据帧[示例]: sample = pd.DataFrame({'VAR1': ['K0', 'K0', 'K1', 'K2', 'K3', 'K4', 'K5'], 'VAR2': ['A0', 'AX', 'A1', 'A2', 'A3', 'A4', 'A5'], 'VAR3': ['A0', 'AX', 'A1', 'A2', 'A3', 'A4', 'A5'],
sample = pd.DataFrame({'VAR1': ['K0', 'K0', 'K1', 'K2', 'K3', 'K4', 'K5'],
'VAR2': ['A0', 'AX', 'A1', 'A2', 'A3', 'A4', 'A5'],
'VAR3': ['A0', 'AX', 'A1', 'A2', 'A3', 'A4', 'A5'],
'VAR4': ['A0', 'AX', 'A1', 'A2', 'A3', 'A4', 'A5']})
并尝试仅保留一些列,并将列重命名为“就地”:
没有运气
但是,当我在没有inplace选项的情况下分配新的数据帧时,它的工作原理如下:
sample_short=sample[['VAR1','VAR2','VAR3']].rename(columns={'VAR1': 'NEW_VAR'})
我做错了什么?非常感谢您的帮助。当传递
inplace=True
时,数据将被重命名(返回None
)。因此,基本上,您正在复制一个数据帧,然后执行一个返回None
的方法,这就是它不起作用的原因
你应使用:
sample_short = sample[['VAR1', 'VAR2', 'VAR3']].rename(columns={'VAR1': 'NEW_VAR'})
或
sample[['VAR1'、'VAR2'、'VAR3']
是一个新对象。您正在对该对象调用。重命名
,而不是原始数据帧。这个新对象现在没有绑定名称,并且被Python取消引用。此外,我建议避免使用inplace
。
sample_short = sample[['VAR1', 'VAR2', 'VAR3']].rename(columns={'VAR1': 'NEW_VAR'})
sample_short = sample[['VAR1', 'VAR2', 'VAR3']]
sample_short.rename(columns={'VAR1': 'NEW_VAR'}, inplace=True)