发布
社区首页 >问答首页 >第一个参数必须是熊猫对象的可迭代参数,您传递了一个类型为"DataFrame“的对象。

第一个参数必须是熊猫对象的可迭代参数,您传递了一个类型为"DataFrame“的对象。
EN

Stack Overflow用户
提问于 2022-04-26 16:40:15
回答 2查看 1.4K关注 0票数 0

我试图通过删除一些值和更改DateTime格式来保存新的CSV文件。我没有什么错误,但现在它.第一个参数必须是熊猫对象的可迭代性,您传递了一个类型为"DataFrame“的对象

代码语言:javascript
复制
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')
代码语言:javascript
复制
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"
EN

回答 2

Stack Overflow用户

发布于 2022-04-27 00:05:10

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

我是在猜测,但是如果您试图获得数据文件中的所有列中的逻辑列,您可以这样做:

代码语言:javascript
复制
df.all(axis=1)
票数 0
EN

Stack Overflow用户

发布于 2022-08-24 00:50:53

当连接dataframes时-pd.concat()需要一个列表的dataframes,所以如果df1df2是两个dataframes那么您实现如下:

代码语言:javascript
复制
pd.concat([df1, df2],ignore_index=True)

如果您没有提供这个列表-那么您可以得到错误:

first argument must be an iterable of pandas objects, you passed an object of type DataFrame

也就是说,pd.concat(df1, df2)将产生错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72017598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档