【问题标题】:first argument must be an iterable of pandas objects, you passed an object of type "DataFrame"第一个参数必须是一个可迭代的 pandas 对象,您传递了一个类型为 \"DataFrame\" 的对象
【发布时间】:2022-08-24 08:50:53
【问题描述】:

我正在尝试通过删除一些值并更改 DateTime 格式来保存新的 CSV 文件几乎没有什么帮助...我几乎没有错误但现在它...第一个参数必须是可迭代的 pandas 对象,您传递了一个对象类型为 \"DataFrame\"

import pandas as pd
import calendar
from datetime import datetime
data1 = pd.read_csv(\"train.csv\")
data1[\'date\']= data1.datetime.apply(lambda x : x.split()[0])
data1[\'hour\']= data1.datetime.apply(lambda x : x.split()[1].split(\":\")[0])
data1[\"weekday\"]= data1.date.apply(lambda dateString : calendar.day_name[datetime.strptime(dateString,\"%m/%d/%Y\").weekday()])
data1[\"month\"]= data1.date.apply(lambda dateString : calendar.month_name[datetime.strptime(dateString,\"%m/%d/%Y\").month])
data1.to_csv(\"output1.csv\")
bookings = data1.groupby(\'month\')[\'Total_booking\'].mean().sort_values(ascending=False)
bookings.to_csv(\"output2.csv\")
from pandas import get_dummies
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
data1[\'holiday\'] =  le.fit_transform(data1[\'holiday\'])

newdata = pd.get_dummies(data,columns=[\'weekday\',\'month\',\'season\',\'weather\'])
data2 = pd.concat(newdata,axis=1)

newdata1 = data1.drop([\'weekday\',\'month\',\'season\',\'weather\'],axis=1,inplace=true)
newdata1.to_csv(\'output/output3.csv\')
TypeError                                 Traceback (most recent call last)
  ~\\AppData\\Local\\Temp/ipykernel_1496/4131473043.py in <module>
   5 
   6 newdata = pd.get_dummies(data1,columns=[\'weekday\',\'month\',\'season\',\'weather\'])
   ----> 7 data2 = pd.concat(newdata,axis=1)
  8 
  9 newdata1 = data1.drop([\'weekday\',\'month\',\'season\',\'weather\'],axis=1,inplace=true)

    ~\\anaconda3\\lib\\site-packages\\pandas\\util\\_decorators.py in 
       wrapper(*args, **kwargs)
       309                     stacklevel=stacklevel,
     310                 )
    --> 311             return func(*args, **kwargs)
      312 
      313         return wrapper

       ~\\anaconda3\\lib\\site-packages\\pandas\\core\\reshape\\concat.py 
       in concat(objs, axis, join, ignore_index, keys, levels, 
       names, verify_integrity, sort, copy)
       292     ValueError: Indexes have overlapping values: [\'a\']
        293     \"\"\"
       --> 294     op = _Concatenator(
        295         objs,
        296         axis=axis,

    ~\\anaconda3\\lib\\site-packages\\pandas\\core\\reshape\\concat.py in 
   __init__(self, objs, axis, join, keys, levels, names, 
 ignore_index, verify_integrity, copy, sort)
      327     ):
       328         if isinstance(objs, (ABCSeries, ABCDataFrame, str)):
       --> 329             raise TypeError(
         330                 \"first argument must be an iterable of pandas \"
          331                 f\'objects, you passed an object of type \"{type(objs).__name__}\"\'

        TypeError: first argument must be an iterable of pandas objects, you passed an object of type \"DataFrame\"
  • 回溯中显示的错误表明您没有从 pandas 正确导入 get_dummies。要么执行import pandas as pd,然后执行pd.get_dummies(data,columns=[\'weekday\',\'month\',\'season\',\'weather\'])from pandas import get_dummies,然后执行代码sn-p。
  • 尽管您的回溯中的错误与问题的标题不匹配,但也许缺少一些东西?

标签: python pandas scikit-learn


【解决方案1】:

我认为您在滥用 concat() 函数。 例如,在 pd.concat 函数中,输入应该是多个数据帧,并且该函数将连接它们(因此,第一个参数必须是熊猫对象的可迭代),以便该函数可以将它们组合成一个熊猫对象(例如,一个数据帧)。

我在推测,但如果您试图获得数据框中所有列的逻辑和列,您可以执行以下操作:

df.all(axis=1)

【讨论】:

    【解决方案2】:

    pd.concat() 期待一个数据框列表,所以如果df1df2 是两个数据帧 - 那么你实现如下:

    pd.concat([df1, df2],ignore_index=True)
    

    如果您不提供此列表 - 那么您会收到错误消息:first argument must be an iterable of pandas objects, you passed an object of type "DataFrame

    【讨论】:

      猜你喜欢
      • 2021-10-26
      • 1970-01-01
      • 1970-01-01
      • 2021-12-21
      • 1970-01-01
      • 2019-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多