gpt4 book ai didi

python - 更改 Pandas Dataframe 中的数据类型

转载 作者:行者123 更新时间:2023-11-30 21:42:37 25 4
gpt4 key购买 nike

下面是我的 selenium 网络抓取工具的最后一部分,循环遍历此 website page 的不同选项卡。 ,选择“导出数据”按钮,下载数据,添加“yearid”列,然后将数据加载到 MySQL 表中。

    df = pd.read_csv(desired_filepath)
df = df.replace('%','',regex=True)
df["yearid"] = datetime.today().year
df.to_csv(desired_filepath)

engine = create_engine("mysql+pymysql://{user}:{pw}@localhost/{db}"
.format(user="walker",
pw="password",
db="data"))
df.to_sql(con=engine, name='fg_test_hitting_{}'.format(button_text), if_exists='replace')

time.sleep(10)
driver.quit()

抓取器工作得很好,但是当数据被加载到 MySQL 表中时,有些列在应该作为数字加载时被加载为 TEXT,最好是 DOUBLE 数据类型。我注意到这只发生在字符串末尾有 % 符号的列名中(即 BB%)。我已经消除了列标题下所有行中的 % 符号,但数据仍作为文本加载到 MYSQL 中。在数据加载到 MySQL 之前,有什么方法可以更改列名中带有 % 符号的所有列的数据类型吗?提前致谢!

最佳答案

演示:

将 URL 解析为 DF:

In [263]: df = pd.read_html(url, header=1)[11]

显示有问题的列:

In [264]: df[df.columns[df.columns.str.contains('%')]]
Out[264]:
BB% K%
0 18.5 % 19.2 %
1 12.8 % 11.5 %
2 11.0 % 13.1 %
3 8.7 % 18.3 %
4 13.5 % 16.0 %
.. ... ...
26 7.0 % 20.2 %
27 13.5 % 12.5 %
28 9.4 % 16.1 %
29 8.6 % 21.5 %
30 NaN NaN

[31 rows x 2 columns]

将它们转换为数字列:

In [265]: df[df.columns[df.columns.str.contains('%')]] = \
(df.filter(regex='%')
.apply(lambda x: pd.to_numeric(x.str.replace(r'[\s%]',''),
errors='coerce')))

结果:

In [266]: df[df.columns[df.columns.str.contains('%')]]
Out[266]:
BB% K%
0 18.5 19.2
1 12.8 11.5
2 11.0 13.1
3 8.7 18.3
4 13.5 16.0
.. ... ...
26 7.0 20.2
27 13.5 12.5
28 9.4 16.1
29 8.6 21.5
30 NaN NaN

[31 rows x 2 columns]

In [267]: df[df.columns[df.columns.str.contains('%')]].dtypes
Out[267]:
BB% float64
K% float64
dtype: object

关于python - 更改 Pandas Dataframe 中的数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50899707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com