我正在试验pandas中的一些函数,我试图在数据框上运行test(),如果数据框包含等于对象的dtypes,则让test()创建虚拟变量。
我能够使用虚拟变量打印出一个np arrary的函数,但我似乎无法覆盖我读入test()的df
import pandas as pd
import numpy as np
import os
url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/communities/communities.data'
df = pd.read_csv(url, sep=',', header=0, names=names, na_values='?')
df.head(2)
def test(data):
for i in data.columns:
if data[i].dtype == 'object':
list_ = list(data.select_dtypes(include=['object']).columns)
#print list_
data = pd.get_dummies(data, prefix=list_)
return data
#test(df)
#df = df.apply(test, axis =1)
df.apply(test)
#df.head(2)
属性错误:("'系列'对象没有属性'列'", 你发生在指数状态')
答案 0 :(得分:4)
问题是,传递给DataFrame.apply
的函数需要Series
作为参数,而不是DataFrame
。将test
重写为
def test(data):
list_ = list(data.select_dtypes(include=['object']).columns)
data = pd.get_dummies(data, prefix=list_)
return data
然后致电
test(df)
这应该为您提供一个全新的DataFrame
,其中包含dtype' object'的所有列。