我是新来的,理想情况下,我会在我从哪里学到idxmax 的这种用法的问题上对此发表评论:
我使用了相同的方法,下面是我的代码
df = pd.DataFrame(np.arange(16).reshape(4,4),columns=["A","B","C","D"],index=[0,1,2,3])
Run Code Online (Sandbox Code Playgroud)
一旦我df[(df>6)]在这个 df 上使用,这些 int 值就会变为浮点数吗?
A B C D
0 NaN NaN NaN NaN
1 NaN NaN NaN 7.0
2 8.0 9.0 10.0 11.0
3 12.0 13.0 14.0 15.0
Run Code Online (Sandbox Code Playgroud)
熊猫为什么要这样做?另外,我在某个地方读到我可以在系列上使用 dtype=object ,但是还有其他方法可以避免这种情况吗?
如果你确实想让 int 看起来像
\n\ndf.astype(object).mask(df<=6)\nOut[114]: \n A B C D\n0 NaN NaN NaN NaN\n1 NaN NaN NaN 7\n2 8 9 10 11\n3 12 13 14 15\nRun Code Online (Sandbox Code Playgroud)\n\n\n\n这种权衡主要是出于内存和性能原因,并且也是为了使生成的 Series 继续为 \xe2\x80\x9cnumeric\xe2\x80\x9d。一种可能性是使用 dtype=object 数组代替。
\n\n有关更多信息astype(object)
df.astype(object).mask(df<=6).applymap(type)\nOut[115]: \n A B C D\n0 <class \'float\'> <class \'float\'> <class \'float\'> <class \'float\'>\n1 <class \'float\'> <class \'float\'> <class \'float\'> <class \'int\'>\n2 <class \'int\'> <class \'int\'> <class \'int\'> <class \'int\'>\n3 <class \'int\'> <class \'int\'> <class \'int\'> <class \'int\'>\nRun Code Online (Sandbox Code Playgroud)\n