我正在pandas中尝试一些函数,并尝试在数据帧上运行test(),如果数据帧包含与对象相等的数据类型,则让test()创建虚拟变量。在
我可以让函数打印出一个带有伪变量的np数组,但是我似乎不能让它覆盖我读入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)
AttributeError: ("'Series' object has no attribute 'columns'", u'occurred at index state')
问题是,传递给
DataFrame.apply
的函数需要一个Series
作为它的参数,而不是DataFrame
。将test
重写为然后打电话
^{pr2}$这将为您提供一个全新的
DataFrame
,其中包含dtype“object”的所有列。在相关问题 更多 >
编程相关推荐