pd
的 read_sql
读取数据import pymysql
import pandas as pd
self.conn = pymysql.connect(host=host, user=user,
password=pass, db=db, charset='utf8')
sql = 'select * from table_name'
df = pd.read_sql(sql, con=self.conn)
pd
的 strip
方法以及 dropna
方法df['product_name'].str.strip()
# 删除列 `product_name` 为 `NaN` 的行
df.dropna(subset=['product_name'], inplace=True)
pd
的 replace
方法df.replace(' ', np.nan, inplace=True)
pd
的 to_sql
方法df.to_sql(name=table_name, con=self.conn, if_exists='append', index=True)
#显示所有列
pd.set_option('display.max_columns', None)
#显示所有行
pd.set_option('display.max_rows', None)
#设置 value 的显示长度为 100,默认为 50
pd.set_option('max_colwidth',100)
to_sql
不能使用 pymysql
的连接,否则就会直接报错pandas.io.sql.DatabaseError: Execution failed on sql 'SELECT name FROM sqlite_master WHERE type='table' AND name=?;': not all arguments converted during string formatting
需要改为
from sqlalchemy import create_engine
engine = create_engine("mysql+pymysql://user:pass@host:port/db")
pd.str.strip()
处理没有用replace
替换空格、空值为 nan
也没有用
解决办法:replace
使用正则替换# 替换\r\n\t 以及 html 中的\xa0
df.replace(r'\r|\t|\n|\xa0', '', regex=True, inplace=True)
# 替换空格,将空格替换为空字符串
df['product_name'].replace(r' ', '', regex=True, inplace=True)
# 将空字符串替换为 nan
df['product_name'].replace(r'', np.nan, regex=True, inplace=True)
# 将乱码替换替换为空字符串(正则为匹配不是中文、字母、数字组成的字符串)
df['product_name'].replace(r'[^\u4e00-\u9fa5_a-zA-Z0-9]', np.nan, regex=True, inplace=True)
本文分享自 Python爬虫scrapy 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!