pandas 读入数据后的 DataFrame,再写入 mysql,如何以 DF 的第一行内容作为 mysql 的字段名?

2019-05-18 00:38:59 +08:00
 qazwsxkevin
```
PageDF = PageDF.append(pd.read_html(readStr)[4], ignore_index=True)
print(PageDF)
engine = create_engine('mysql+pymysql://root:root@192.168.89.46:3306/test?charset=utf8')
PageDF.to_sql(Testtable,engine,index=False)
```

Print(PageDF)

```
0 1 2 3
0 序号 物品名称 重量 柜号
1 1 西瓜 20 14
2 2 芝麻 20 11
3 3 玉米 20 11
4 4 茄子 20 9
```

Navicat 看到 Testtable 是这样的:
```
+------+-------+------------+------+------+
|0 | 0 | 1 | 2 | 3 |
+------+-------+------------+------+------+
|0 | 序号 | 物品名称 | 重量 | 柜号 |
|1 | 1 | 西瓜 | 20 | 14 |
|2 | 2 | 芝麻 | 20 | 11 |
|3 | 3 | 玉米 | 20 | 11 |
|4 | 4 | 茄子 | 20 | 9 |
```

但我想写进去的时候是这样子的,看了 to_sql 的英文文档,试了 index_lable=0 那些参数,始终弄不成下面这个样子的写入状态:

```
+------+-------+------------+------+------+
|0 | 序号 | 物品名称 | 重量 | 柜号 |
+------+-------+------------+------+------+
|1 | 1 | 西瓜 | 20 | 14 |
|2 | 2 | 芝麻 | 20 | 11 |
|3 | 3 | 玉米 | 20 | 11 |
|4 | 4 | 茄子 | 20 | 9 |
```

请问正确的 to_sql 写入方式应该是怎么做的?

感谢各位热心解答~~~
2155 次点击
所在节点    Python
3 条回复
binux
2019-05-18 02:40:26 +08:00
你先把 pageDF 的 columns 整对了
给 read_Html 加参数
或者你手动 assign columns
qazwsxkevin
2019-05-18 13:16:42 +08:00
@binux 感谢感谢,看来是没有自带方法这么做,发帖前也查过文档,这里高手多,是想试着问问也许有妖招吧。。。^_^
现在老老实实组装 MySQL 语句 ing...
binux
2019-05-18 13:48:57 +08:00
@qazwsxkevin #2 怎么就没有了?

> 给 read_Html 加参数
```
header : int or list-like or None, optional
The row (or list of rows for a MultiIndex) to use to make the columns headers.
```

> 或者你手动 assign columns
```
pageDF.columns = pageDF.iloc[0]
```

难道我要喂你嘴里你才会吃吗?你能不能花 30 分钟把入门文档给看了?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/565236

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX