【发布时间】:2020-11-06 19:17:41
【问题描述】:
我正在使用 pandas read_csv 来提取数据并重新格式化。例如,“HBE 日期”列中的“10/28/2018”将重新格式化为“eHome 10/2018”
除了我得到像“ehome 1.0/2015.0”这样的重新格式化的值之外,它大部分都有效
eHomeHBEdata['HBE date'] = pd.to_datetime(eHomeHBEdata['Course Completed'])
#extract month and year values
eMonths=[]
eYears =[]
eHomeDates = eHomeHBEdata['HBE date']
for eDate in eHomeDates:
eMonth = eDate.month
eYear = eDate.year
eMonths.append(eMonth)
eYears.append(eYear)
此时,如果我 print(type(eMonth)) 它返回为“int”。如果我打印 eYears 列表,我会得到 2013、2014、2015 等值。
然后我将列表分配给数据框中的列。 . .
eHomeHBEdata.insert(0,'workshop Month',eMonths)
eHomeHBEdata.insert(1,'workshop Year',eYears)
。 . .之后 print(ehomeHomeHBEdata['workshop Month']) 返回值,例如 2013.0、2014.0、2015.0。那是浮动类型,对吧?
当我尝试使用下面的代码时,我得到了上面提到的格式错误
eHomeHBEdata['course session'] = "ehome " + eHomeHBEdata['workshop Month'].astype(str) + "/" + eHomeHBEdata['workshop Year'].astype(str)
eHomeHBEdata['start'] = eHomeHBEdata['workshop Month'].astype(str) + "/1/" + eHomeHBEdata['workshop Year'].astype(str) + " 12:00 PM"
谁能解释这里发生了什么并帮我解决它?
【问题讨论】:
-
使用此方法检查数据框中每一列的数据类型 pandas.DataFrame.dtypes 可能“workshop Month”是浮点数,如果您插入一个 int 值,它会将其转换为浮点数
-
'workshop Month' 是类型系列。创建它的 eMonths 对象是一个列表。进入列表的各个 eMonth 对象是 int 类型。然而,当将“workshop Month”放入 df 列时,它看起来像一个浮点数。
标签: python python-3.x pandas