python - 在熊猫中将行转换为正确的数据框
问题描述
我有这种类型的行
start=2019-11-02T00:00:00&end=2019-11-03T00:00:00&step=1L
source=B&select=mean&step=5K&format=2&start=2019-11-02T00
我想以这种方式将其更改为正确的 csv 格式
start,end,step,source,select,format
2019-11-02T00:00:00,2019-11-03T00:00:00,1L,,,
2019-11-02T00,,5K,B,mean,2
如您所见,第一行没有来源、选择和格式,因此该 csv 中没有该行的值。同样,第二行有 Nan,因为它没有值。
我如何在熊猫中做到这一点?
解决方案
DataFrame
首先将文件转换为数据中不存在某些 sep的一列read_csv
:
import pandas as pd
from io import StringIO
temp="""start=2019-11-02T00:00:00&end=2019-11-03T00:00:00&step=1L
source=B&select=mean&step=5K&format=2&start=2019-11-02T00"""
#after testing replace 'pd.compat.StringIO(temp)' to 'filename.csv'
df = pd.read_csv(StringIO(temp), sep=";", names=['data'])
print (df)
data
0 start=2019-11-02T00:00:00&end=2019-11-03T00:00...
1 source=B&select=mean&step=5K&format=2&start=20...
然后在列表理解中创建字典列表并传递给DataFrame
构造函数:
L = [dict([y.split('=') for y in x.split('&')]) for x in df['data']]
df = pd.DataFrame(L)
print (df)
start end step source select format
0 2019-11-02T00:00:00 2019-11-03T00:00:00 1L NaN NaN NaN
1 2019-11-02T00 NaN 5K B mean 2
最后写入文件的时间DataFrame.to_csv
df.to_csv('filename1.csv', index=False)
推荐阅读
- c++ - QCheckBox 和 QRadioButton 的 Qt Style-Sheet 伪状态中的字体设置
- python - 函数的时间复杂度
- python - 带有自定义 CSS 的 Plotly-Dash 中的列出现问题
- android - Android Retrofit OkHttpClient 拦截器添加标头获取错误“HTTP 403 Forbidden”
- php - PHPSpreadsheet 选择要在 HTML 中显示的特定工作表
- node.js - SequelizeUniqueConstraintError 创建方法只添加一行
- mysql - 如何在 ROW binlog 格式的“show processlist”命令中显示正在运行的查询
- r - 与 Shiny 1.0.5 兼容的最新 DT 版本是什么?
- reactjs - What does double forward slash asterisk "//*" do in React router route path matching?
- azure - 导致 Microsoft.VisualStudio.Coverage.VanguardException 的覆盖物覆盖率报告