根据列选择行并保留dataframe中的维度

时间:2015-10-06 15:59:27

标签: python pandas

我正在尝试执行以下操作:在数据框X上,我想选择X['a']>0的所有行,但我想保留X的维度,以便任何其他行将显示为包含NaN。有快速的方法吗?如果X[X['a']>0]X,则不会保留 Level Item Qty Total Qty 1 A 1 1 1 B 2 2 2 C 3 6 2 D 1 2 2 E 2 4 3 F 5 20 3 G 3 12 2 H 2 4 3 I 1 4 2 J 1 2 2 K 3 6 1 L 2 2 1 M 1 1 的尺寸。

1 个答案:

答案 0 :(得分:1)

使用双下标[[]]

In [42]:
df = pd.DataFrame({'a':np.random.randn(10)})
df

Out[42]:
          a
0  1.042971
1  0.978914
2  0.764374
3 -0.338405
4  0.974011
5 -0.995945
6 -1.649612
7  0.965838
8 -0.142608
9 -0.804508

In [48]:
df[df[['a']] > 1]

Out[48]:
          a
0  1.042971
1       NaN
2       NaN
3       NaN
4       NaN
5       NaN
6       NaN
7       NaN
8       NaN
9       NaN

这里的关键语义差异是当你加倍下标时返回的是一个df,所以这掩盖了df本身而不是索引

请注意,如果您有多列,则会将所有列屏蔽为NaN