我正在编写一个python脚本,该脚本从数据库读取数据并将此数据保存到.csv
文件中。为了正确保存它,我需要转义不同的字符,如rn
或n
。下面是我目前的做法:
首先,我使用read_sql
pandas函数从数据库中读取数据。
import pandas as pd
df = pd.read_sql(
sql = 'SELECT * FROM exampleTable',
con = SQLAlchemyConnection
)
我得到的表有不同类型的值。
然后,脚本更新获得的数据帧,将每个字符串值更改为原始字符串。为了实现这一点,我使用了两个嵌套的for循环,以便对每个值进行操作。
def update_df(df)
for rowIndex, row in df.iterrows():
for colIndex, values in row.items():
if isinstance(df[rowIndex, colIndex], str):
df.at[rowIndex, colIndex] = repr(df.at[rowIndex, colIndex])
return df
但是,我需要详细说明的数据量很大(超过100万行,超过100列),需要花费数小时。
我需要的是一种方法来创建csv文件在一个更快的方式。
提前谢谢你。
如果你真的有混合类型,使用applymap
应该更快:
df = df.applymap(lambda x: repr(x) if isinstance(x, str) else x)
但是,如果您可以识别字符串列,那么您可以对它们进行切片,(可能与re.escape
结合使用?):
import re
str_cols = ['col1', 'col2']
df[str_cols] = df[str_cols].applymap(re.escape)