如果dtype等于object,则运行函数

时间:2016-01-18 15:34:37

标签: python pandas dataframe

我正在试验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)
  

属性错误:("'系列'对象没有属性'列'",   你发生在指数状态')

1 个答案:

答案 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'的所有列。