Pandas DataFrame:用具有新列名的列表替换列

bvuwiixz  于 2023-10-14  发布在  其他
关注(0)|答案(3)|浏览(113)

我有一个Pandas DataFrame,想用一个新列替换一个列。该列应该有一个新的名称和一个列表给出其内容。我可以用两种不同的方式来做这件事。请参阅下面的代码。

import pandas as pd

df = pd.DataFrame({
    'Name': ['Alice','Bob','Charlie'],
    'Age': [18,19,20]
})
print('df=\n',df,'\n')

marks = [50,60,90]

# Drop and add 
df1 = df.drop(columns = ['Age'])
df1['Marks'] = marks
print('df1=\n',df1,'\n')
print() 

# Rename and assign
df1 = df.rename(columns={'Age':'Marks'})
df1 = df1.assign(Marks=marks) 
print('df1=\n',df1)

输出量:

df=
       Name  Age
0    Alice   18
1      Bob   19
2  Charlie   20 

df1=
       Name  Marks
0    Alice     50
1      Bob     60
2  Charlie     90 

df1=
       Name  Marks
0    Alice     50
1      Bob     60
2  Charlie     90

我的问题是:有没有更优雅的或一行代码来执行这个“替换列”操作?

9jyewag0

9jyewag01#

您可以在一行中使用dropassign

df = df.drop(columns='Age').assign(Marks=marks)

如果新列名中有空格:

df =  df.drop(columns='Age').assign(**{"Marks Obtained": marks})
xoefb8l8

xoefb8l82#

是的,您可以使用此代码执行此分配和删除

df = df.assign(Marks=marks).drop(columns=['Age'])

现在你得到你想要的了

oogrdqng

oogrdqng3#

您也可以将renameupdate一起使用

# in-place
df.rename(columns={"Age": "Marks"}, inplace=True)
df.update({"Marks": marks})

相关问题