python - 将列表转换为DataFrame如何删除第一行中的前导0
问题描述
我正在尝试使用 Panda 将 a 转换list
为DataFrame
. 每次我试图将列表转换为 DataFrame 时,我都会得到第一行,0
但它不能正常工作?
代码:
import pandas as pd
df = pd.DataFrame(list(data))
print(df)
输入:
['"DateTime","mm"', ['"2016-10-14 00:00:00"', '1.1'], ['"2016-10-15 00:00:00"', '2.1'], ['"2016-10-16 00:00:00"', '8.4'], ['"2016-10-17 00:00:00"', '1.1'], ['"2016-10-18 00:00:00"', '3.1'], ['"2016-10-19 00:00:00"', '0'], ['"2016-10-20 00:00:00"', '0'], ['"2016-10-21 00:00:00"', '0'], ['"2016-10-22 00:00:00"', '0'], ['"2016-10-23 00:00:00"', '0'], ['"2016-10-24 00:00:00"', '7.4'], ['"2016-10-25 00:00:00"', '2.1'], ['"2016-10-26 00:00:00"', '0'], ['"2016-10-27 00:00:00"', '0'], ['"2016-10-28 00:00:00"', '0'], ['"2016-10-29 00:00:00"', '0']
输出:
0
0 "DateTime","mm"
1 ["2016-10-14 00:00:00", 1.1]
2 ["2016-10-15 00:00:00", 2.1]
3 ["2016-10-16 00:00:00", 8.4]
4 ["2016-10-17 00:00:00", 1.1]
.. ...
344 ["2017-10-05 00:00:00", 1]
345 ["2017-10-06 00:00:00", 0]
346 ["2017-10-07 00:00:00", 1.1]
347 ["2017-10-08 00:00:00", 0]
348 ["2017-10-09 00:00:00", 0]
[349 rows x 1 columns]
解决方案
你想要的是这样的:
pd.DataFrame(data[1:], columns=data[0].split(','))
要获得具有datetime
和float
类型的干净数据框:
df = (pd.DataFrame(data[1:], columns=data[0].replace('"', '').split(','))
.assign(DateTime=lambda d: d['DateTime'].str.strip('"'))
.astype({'DateTime': 'datetime64', 'mm': 'float'})
)
输出:
DateTime mm
0 2016-10-14 1.1
1 2016-10-15 2.1
2 2016-10-16 8.4
3 2016-10-17 1.1
4 2016-10-18 3.1
...
现在它已经干净并可以用于下游处理了。例子:
df.plot(x='DateTime', y='mm')
推荐阅读
- c - 找到多项式的 y、导数和积分值的程序(更新)
- php - 如何修复“仅在文档开头允许 XML 声明”
- php - 如何使用 PHP、jQuery 和 AJAX 实现类似计数器?
- c# - C#如何在Datagrid中使用其他单元格值隐藏特定单元格
- python - 统一文本和图像分类(Python)
- python - 为什么在调用实例属性时不使用 self.varibale_name
- java - 小程序输出不正确。为什么这个 String 变量没有做我想要的?
- java - 访问被拒绝写入 ApplicationResources.properties 文件
- javascript - DOM 元素单击按钮但不调用控制器中为 Button 定义的函数
- java - 是否有 java 11 替代品来使用 maven exec:java 获取类路径中的所有 jars?