python - Pandas:定义新列的类型
问题描述
我的目标是event_id
不是另存为float
,而是另存为int
。
list_of_event_ids = orders["event_id"].unique().tolist()
print(list_of_event_ids)
这里的输出是[180, 181]
data_for_csv = pd.DataFrame(columns=["ds", "yhat", "yhat_lower", "yhat_upper"])
for event_id in list_of_event_ids:
[...]
forecast = m.predict(future)
# Here I add event_id to the forecast DataFrame
forecast["event_id"] = event_id
new_row_for_data_for_csv = forecast[["event_id", "ds", "yhat", "yhat_lower", "yhat_upper"]].tail(1)
data_for_csv = data_for_csv.append(new_row_for_data_for_csv, ignore_index=True)
print(data_for_csv)
这里的输出是:
ds yhat yhat_lower yhat_upper
0 2019-10-03 04:36:09.982632 180.0 5.826519 3.382635 8.365737
1 2019-10-04 06:28:09.699094 181.0 5.212132 3.529156 12.831940
你能解释一下为什么列表[180, 181]
被转换成float
? 如何避免这种行为?
解决方案
如果您使用 DataFrame.append 添加数据,则从您添加数据的位置保留数据类型。
您可以通过将 dtypes 显式分配给列来避免这种行为。例如
data_for_csv.event_id=data_for_csv.event_id.astype(int)
推荐阅读
- visual-studio-code - 如何在 VS Code for Lean (macOS) 中输入符号
- flutter - 为什么这个小部件没有出现在颤振应用程序中?
- reactjs - 在反应中导入scss
- php - 将具有不同键的关联数组添加到主关联数组
- reactjs - 如何在 React JS 中使用 Symfony CSRF 令牌
- scala - Map[String,Any] 类型中的非变量类型参数 String
- javascript - 在私有浏览器中加载跨域 iframe 会注销用户
- networking - 如何从 OSPF 配置中删除 lan
- c++ - 如何制作提供编译器命令的 .exe
- java - 将war文件部署到heroku,包括附加文件