【发布时间】:2015-06-16 11:28:03
【问题描述】:
我有一个仅包含 1、0 和 -1 的数据框(称为 panel[xyz])。维度是:0:10 行和 a:j 列。
我想创建另一个具有相同垂直轴但只有 3 列的数据框 (df): col_1 = 计算所有非零值(1s 和 -1s) col_2 = 计数全 1 col_3 = 计数所有 -1s
我在搜索 SO 时发现了这个:
df[col_1] = (pan[xyz]['a','b','c','d','e'] > 0).count(axis=1)
...并尝试了许多不同的迭代,但我无法获得条件 (>0) 来区分 pan[xyz] 中的不同值。计数始终为 5。
任何帮助将不胜感激。
编辑:
平移[xyz] =
. 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j'
0 1 0 0 -1 0 0 -1 0 1 0
1 0 1 0 0 0 1 0 0 0 -1
2 1 0 0 0 0 -1 0 0 0 0
3 0 -1 0 0 0 0 0 1 0 0
4 0 0 0 1 0 0 -1 0 0 -1
df 应该是 =
. col_1 col_2 col_3
0 4 2 2
1 3 2 1
2 2 1 1
3 2 1 1
4 3 1 2
但这就是我为 col_1 得到的:
df = (panel[xyz] > 0).count(axis=1)
df
Out[129]:
0 10
1 10
2 10
3 10
4 10
dtype: int6
【问题讨论】:
-
谢谢 JohnE,好建议。
标签: python pandas conditional dataframe vectorization