【发布时间】:2019-06-14 03:37:43
【问题描述】:
这是 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.0 应该和 1 一样。我写了 df['x']=df['x].replace({'1.0:'1'})。它不会改变任何东西。 9.0 vs 9、3.0 vs.3 症状相同
- 如果出现字母,频率如何呈现为 int64?
- 期望结果 1:将所有字母组 +NaN 归为一组。其余数值组合并(例如,1.0 和 1 =1)。在 SAS 中,我只运行这个:y=1*X。我只是给出一个值 10 来表示字符组 + NaN。如何在 Python 中做到这一点,特别优雅?
- 结果 2:如果 x=NaN,则提取二进制变量 z=1。否则 z=0
【问题讨论】:
-
这看起来像是家庭作业?到目前为止你做了什么来解决它?
-
这不是家庭作业。这是大型企业中严肃的高级分析工作。这是一个将代码从 SAS 转移到 Python 的过程。从来没见过1.0可以和1分开。好的。由于我正在玩Python,所以想看看是否有任何快速的方法可以用Python编写它。这在大型机 JCL 上也不会发生。
-
我只是在这里求知。工作没有延误。
-
我首先在python中使用sas7bdat来读取SAS数据格式的原始数据。它进展得很慢,工作一直在弯腰。所以我运行 SAS 将数据集导出为 CSV 并切换到 pd.read_csv。它进行得非常非常快。常规 Python 3.7.2 ~10 分钟。打开 pyspark 大约需要 2 分钟。工作真的很棒。我自然要审核。所有其他变量,~98,结果如预期。除了这个。不知道发生了什么。知道我想要它是什么。但是像这样编码一个 int64 对我来说并不容易。想这里有人可能知道。
标签: python pandas replace recode int64