python - 将数据框转换为列表时更改值
问题描述
我有一个问题,我已经研究了一段时间但无法理解。
我正在使用 Python 进行数据分析项目。我有这个数据集,其中包含坐标点 x 和 y。DataFrame
我将数据集存储在名为 df的 panda中。该数据集包含 400 行,每 2 列包含 x 和 y 坐标,它们是float64
对象。
对于我的计算,我需要将其转换DataFrame
为list
,我们称之为 df_list。我使用df.values.tolist()
命令执行此操作。
我还需要将相同dataframe
的转换为 a numpy array
,我们称之为 df_numpy。我使用df.to_numpy()
命令执行此操作。
现在,我遇到的问题是某些值没有正确转换为list
. 奇怪的是,总是一个坐标条目是错误的,但并不总是相同的。
让我通过给出一些输出值来解释:
print(df.loc[0])
print(df.loc[1])
print(df.loc[2])
print(df.loc[3])
print(df.loc[4])
X 1.000000
是 0.561865
名称:0,数据类型:float64
X 0.351548
是 0.002068
名称:1,数据类型:float64
X 0.523878
是 0.337961
名称:2,数据类型:float64
X 0.948091
是 0.456298
名称:3,数据类型:float64
X 0.608648
是 0.806752
名称:4,数据类型:float64
print(df_numpy[0])
print(df_numpy[1])
print(df_numpy[2])
print(df_numpy[3])
print(df_numpy[4])
[1。0.56186462]
[0.35154843 0.00206845]
[0.52387755 0.33796057]
[0.94809129 0.45629823]
[0.60864801 0.80675194]
print(df_list[0])
print(df_list[1])
print(df_list[2])
print(df_list[3])
print(df_list[4])
[1.0, 0.5618646171659081]
[0.3515484263307057, 0.0020684547262851357]
[0.5238775486787602, 0.3379605736871545]
[1.1245393310467733, 0.6538012024565103]
[0.6086480098218077, 0.8067519389187792]
如您所见,位置 3 中list
的数字与DataFrame
和 中的数字不同numpy array
。
有什么解释为什么会发生这种情况吗?
先感谢您。
解决方案
弃用你对 pandas.DataFrame.values 的使用!
如果您访问 .values 的pandas 文档,您会看到一个红色的大警告,上面写着:
警告:我们建议改用 DataFrame.to_numpy()。
推荐阅读
- python - Discord.py ctx 命令没有响应
- r - 在 R 中使用 dplyr 重命名具有系列索引的多列
- java - java.util.Stack 和 java.util.ArrayDeque 中的 grow() 方法之间的区别
- python-3.x - 如何安全地停止无限循环以完成在 Python 中收集 Json 数据?
- bash - 运行 shell 脚本时出现条件二元运算符预期错误
- python - 熊猫打印条件在数据框列中成立的日期期间?
- apache - Fail2Ban 忽略本地重定向的 404
- python - 在 Python 中执行 Dickey-Fuller 测试
- node.js - 从 REST API 访问用户 Outlook 日历
- javascript - 打字稿 - 参数“工件”和“值”的类型不兼容