【发布时间】:2018-10-22 20:47:21
【问题描述】:
我正在尝试为我的数据帧 (combo) 中的列子集计算 zscores,然后在该数据帧中为这些 zscores 创建新列。请注意,当 zscore 被 pd.concat'ed 时,生成的新列都是 NaN。这就是我需要帮助的问题。
我认为这可能与 concat 添加新列的方式有关,因为没有唯一的键可以匹配。但是当我试图将电子邮件保留在 zcores 中间表中时,它并没有解决问题。所以它可能是别的东西。
zscores = combos.loc[:,pa_grade_cols].dropna(axis=0)
zscores = zscores.apply(zscore)
zscores = zscores.rename(lambda x:colrename(x, "zscore "), axis=1)
newcombo = pd.concat([combo, zscores], axis=1)
combo.iloc[4]:
email msilveira66@brandeis.edu
all pas 54.84
all partic 92.21
course 60.39
pa grade PA01 67.7
pa grade PA02 82
pa grade PA03 21
pa grade PA04 0
pa grade PA05 43
pa grade PA06 29
pa grade PA07 61
pa grade PA08 63
pa grade PA09 NaN
pa grade PA10 72
pa grade PA11 0
resub PA01 NaN
resub PA02 NaN
resub PA03 NaN
resub PA04 NaN
resub PA05 NaN
resub PA06 NaN
resub PA07 NaN
resub PA08 NaN
resub PA09 NaN
resub PA10 NaN
resub PA11 NaN
initial PA01 56
initial PA02 83.3333
initial PA03 30
initial PA04 0
initial PA05 61
initial PA06 42
initial PA07 80
initial PA08 90
initial PA09 NaN
initial PA10 97
initial PA11 0
resubmits 0
resub mean NaN
initial mean 53.9333
pa grade mean 43.87
Name: 4, dtype: object
zscores.iloc[4]:
zscore PA01 -0.562523
zscore PA02 -0.418858
zscore PA03 -1.722308
zscore PA04 -1.378762
zscore PA05 -2.291849
zscore PA06 -0.503729
zscore PA07 -0.343543
zscore PA08 -2.037249
zscore PA09 -0.064932
zscore PA10 -0.428859
zscore PA11 -0.735842
Name: 5, dtype: float64
newcombo:
email msilveira66@brandeis.edu
all pas 54.84
all partic 92.21
course 60.39
pa grade PA01 67.7
pa grade PA02 82
pa grade PA03 21
pa grade PA04 0
pa grade PA05 43
pa grade PA06 29
pa grade PA07 61
pa grade PA08 63
pa grade PA09 NaN
pa grade PA10 72
pa grade PA11 0
resub PA01 NaN
resub PA02 NaN
resub PA03 NaN
resub PA04 NaN
resub PA05 NaN
resub PA06 NaN
resub PA07 NaN
resub PA08 NaN
resub PA09 NaN
resub PA10 NaN
resub PA11 NaN
initial PA01 56
initial PA02 83.3333
initial PA03 30
initial PA04 0
initial PA05 61
initial PA06 42
initial PA07 80
initial PA08 90
initial PA09 NaN
initial PA10 97
initial PA11 0
resubmits 0
resub mean NaN
initial mean 53.9333
pa grade mean 43.87
zscore PA01 NaN
zscore PA02 NaN
zscore PA03 NaN
zscore PA04 NaN
zscore PA05 NaN
zscore PA06 NaN
zscore PA07 NaN
zscore PA08 NaN
zscore PA09 NaN
zscore PA10 NaN
zscore PA11 NaN
Name: 4, dtype: object
【问题讨论】:
-
我猜问题出在
.dropna(axis=0)- 它删除了所有NaNs 行,所以如果只添加带有计算数据的值,所有其他不匹配的行都将转换为NaNs . -
我认为你是对的:ipdb> zscores.shape (70, 11) ipdb> combo.shape (75, 41) ipdb>
标签: pandas