gpt4 book ai didi

python - 追加列 pandas : TypeError: assign() takes 1 positional argument but 2 were given

转载 作者:行者123 更新时间:2023-12-02 11:48:23 28 4
gpt4 key购买 nike

我想将新列附加到“trainData”,我们的两个数据框都有 712 行当我尝试使用 .assign 方法附加新列 "Age" 时,会出现以下错误

使用数据帧附加列的正确方法是什么?

df = pd.read_csv("data/train.csv")
#Dropping the columns
df = df.drop(['Ticket','Cabin'], axis=1)
#Dropping the na columns
df = df.dropna()
print("Age ====", df["Age"])
titanic_dummies = pd.get_dummies(df, columns=['Pclass', 'Sex', 'Embarked'])

trainData = titanic_dummies[ ["Pclass_1", "Pclass_2", "Pclass_3","Sex_female","Sex_male","Embarked_C","Embarked_Q","Embarked_S"]]
print("My train data",trainData)
trainData = trainData.assign(df["Age"])

下面是异常(exception)情况

  File "<ipython-input-79-3f3ce0263545>", line 1, in <module>
runfile('C:/RafiWork/TASK/Personal/Data Science/Algorithmica/Day2/Titanic_Example/Test Neural Network/decisiontree.py', wdir='C:/RafiWork/TASK/Personal/Data Science/Algorithmica/Day2/Titanic_Example/Test Neural Network')

File "C:\RafiWork\Softwares\MiniConda\envs\python35\lib\site-packages\spyder\utils\site\sitecustomize.py", line 688, in runfile
execfile(filename, namespace)

File "C:\RafiWork\Softwares\MiniConda\envs\python35\lib\site-packages\spyder\utils\site\sitecustomize.py", line 101, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)

File "C:/RafiWork/TASK/Personal/Data Science/Algorithmica/Day2/Titanic_Example/Test Neural Network/decisiontree.py", line 30, in <module>
trainData = trainData.assign(df["Age"])

TypeError: assign() takes 1 positional argument but 2 were given

最佳答案

我认为您需要定义列名称:

trainData = trainData.assign(Age=df["Age"])

谢谢piRSquared对于评论,如果索引不相同,请使用:

trainData = trainData.assign(Age=df["Age"].values)

但是数据未按索引对齐。

示例:

import seaborn as sns
#sample df (similar like your data)
df = sns.load_dataset("titanic")
#capitalize columns names
df.columns = df.columns.str.capitalize()
print (df.head())
Survived Pclass Sex Age Sibsp Parch Fare Embarked Class \
0 0 3 male 22.0 1 0 7.2500 S Third
1 1 1 female 38.0 1 0 71.2833 C First
2 1 3 female 26.0 0 0 7.9250 S Third
3 1 1 female 35.0 1 0 53.1000 S First
4 0 3 male 35.0 0 0 8.0500 S Third

Who Adult_male Deck Embark_town Alive Alone
0 man True NaN Southampton no False
1 woman False C Cherbourg yes False
2 woman False NaN Southampton yes True
3 woman False C Southampton yes False
4 man True NaN Southampton no True
<小时/>
df = df.dropna() 
#print("Age ====", df["Age"])
titanic_dummies = pd.get_dummies(df, columns=['Pclass', 'Sex', 'Embarked'])

trainData = titanic_dummies[ ["Pclass_1", "Pclass_2", "Pclass_3","Sex_female","Sex_male","Embarked_C","Embarked_Q","Embarked_S"]]
#print("My train data",trainData.head())

trainData = trainData.assign(Age=df["Age"])
print("My train data",trainData.head())

My train data Pclass_1 Pclass_2 Pclass_3 Sex_female Sex_male Embarked_C \
1 1 0 0 1 0 1
3 1 0 0 1 0 0
6 1 0 0 0 1 0
10 0 0 1 1 0 0
11 1 0 0 1 0 0

Embarked_Q Embarked_S Age
1 0 0 38.0
3 0 1 35.0
6 0 1 54.0
10 0 1 4.0
11 0 1 58.0

使用 join 的另一个解决方案:

trainData = trainData.join(df["Age"])
print("My train data",trainData.head())

My train data Pclass_1 Pclass_2 Pclass_3 Sex_female Sex_male Embarked_C \
1 1 0 0 1 0 1
3 1 0 0 1 0 0
6 1 0 0 0 1 0
10 0 0 1 1 0 0
11 1 0 0 1 0 0

Embarked_Q Embarked_S Age
1 0 0 38.0
3 0 1 35.0
6 0 1 54.0
10 0 1 4.0
11 0 1 58.0

经过一些检查数据后,似乎可以将列 Age 添加到子集:

trainData = titanic_dummies[ ["Pclass_1", "Pclass_2", "Pclass_3",
"Sex_female","Sex_male",
"Embarked_C","Embarked_Q","Embarked_S",
"Age"]]

print("My train data",trainData.head())

My train data Pclass_1 Pclass_2 Pclass_3 Sex_female Sex_male Embarked_C \
1 1 0 0 1 0 1
3 1 0 0 1 0 0
6 1 0 0 0 1 0
10 0 0 1 1 0 0
11 1 0 0 1 0 0

Embarked_Q Embarked_S Age
1 0 0 38.0
3 0 1 35.0
6 0 1 54.0
10 0 1 4.0
11 0 1 58.0

关于python - 追加列 pandas : TypeError: assign() takes 1 positional argument but 2 were given,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45912118/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com