首页 > 解决方案 > 在 python 中清理这个 int64 变量

问题描述

这是 var FREQUENCY 的原始分布

NaN    22131161
1.0     4182626
7.0      218343
3.0      145863
1         59432
0.0       29906
2.0       28129
4.0       15237
5.0        4553
8.0        3617
3          2754
7          2635
9.0         633
2           584
4           276
0           112
8            51
5            42
6.0          19
A             9
I             7
9             6
Q             3
Y             2
X             2
Z             1
C             1
N             1
G             1
B             1
Name: FREQUENCY, dtype: int64
  1. 组 1.0 应该和 1 一样。我写了 df['x']=df['x].replace({'1.0:'1'})。它不会改变任何东西。9.0 vs 9, 3.0 vs.3 症状相同
  2. 在出现字母的情况下,频率如何呈现为 int64?
  3. 期望结果 1:将所有字母组 +NaN 归为一组。其余数值组合并(例如,1.0 和 1 =1)。在 SAS 中,我只运行这个:y=1*X。我只是给出一个值 10 来表示字符组 + NaN。如何在 Python 中做到这一点,尤其是优雅的?
  4. 结果 2:如果 x=NaN,则提取二进制变量 z=1。否则 z=0

标签: pythonpandasreplacerecodeint64

解决方案


第一个问题“组1.0应该与1相同。我写了df['x']=df['x].replace({'1.0:'1'})。它没有改变任何东西。9.0 vs 9,一旦我在读取 csv 文件时添加了 dtype={'FREQUANCY':'object'} ,3.0 与 3 具有相同的症状“已修复。组 1.0 与组 1 折叠...之后替换工作正常。

几乎所有其他问题都得到了解决,除了问题 2,它仍然将变量类型设置为 int64,其中存在字符变量。我的猜测是 Python 可能采用多数规则来对数据类型进行投票。确实是真正的数值在计数中占主导地位。


推荐阅读