【发布时间】:2020-08-28 03:43:40
【问题描述】:
我有一个问题,我已经研究了一段时间但无法理解。
我正在使用 Python 进行数据分析项目。我有这个数据集,其中包含坐标点 x 和 y。我将数据集存储在名为 df 的 panda DataFrame 中。该数据集包含 400 行,每 2 列包含 x 和 y 坐标,它们是 float64 对象。
对于我的计算,我需要将这个DataFrame 转换为list,我们称之为df_list。我使用df.values.tolist() 命令执行此操作。
我还需要将相同的dataframe 转换为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
Y 0.561865
名称:0,数据类型:float64
X 0.351548
Y 0.002068
名称:1,数据类型:float64
X 0.523878
Y 0.337961
名称:2,数据类型:float64
X 0.948091
Y 0.456298
名称:3,数据类型:float64
X 0.608648
Y 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]
如您所见,list 中位置 3 的数字与 DataFrame 和 numpy array 中的数字不同。
有什么解释为什么会发生这种情况吗?
提前谢谢你。
【问题讨论】:
-
我看不出有任何其他理由表现得不同。唯一需要担心的是,当 pandas 文档建议不要使用 df.values 时,他们可能会意识到一些性能问题。我一定会对此进行研究。我不知道需要 np 数组和列表。但是如果你需要两者,那么你可以使用 df.to_numpy 为 np 数组和 df.to_numpy().tolist() 为列表。
标签: python pandas list numpy dataframe