在dtype等于obj时运行函数

2024-04-26 03:39:17 发布

您现在位置:Python中文网/ 问答频道 /正文

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


Tags: columns数据函数testimporturlpandasdf
1条回答
网友
1楼 · 发布于 2024-04-26 03:39:17

问题是,传递给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

然后打电话

^{pr2}$

这将为您提供一个全新的DataFrame,其中包含dtype“object”的所有列。在

相关问题 更多 >