【发布时间】: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