基本上,我有一个数据框,其中b
只能包含1
,只有2
或1
和2
的组合。如果它只有一个元素(例如1
),那么缺少的元素(例如2
)应该得到一个值,比如0
。
例如df = pd.DataFrame({'value':np.random.randn(3), 'b':[1,1,1]})
结果数据框应如下所示:
value b
-0.160580 1
0.100649 1
1.402768 1
0 2
但是,如果df = pd.DataFrame({'value':np.random.randn(3), 'b':[2,2,2]})
value b
0 1
-0.390148 2
0.843670 2
-0.199137 2
如果df = pd.DataFrame({'value':np.random.randn(3), 'b':[1,2,2]})
value b
-0.912213 1
-1.827496 2
0.995711 2
我虽然启动了数据框:
df_init = pd.DataFrame({'value':[0,0],'b':[1,2]})
然后使用df
具有的任何值更新它,并根据b
是1
还是2
放置它们,但不知道如何执行此操作。 ..
答案 0 :(得分:0)
如果列中没有2,您可以append
:
In [11]: df.append(pd.Series({'value': 0, 'b': 2}), ignore_index=True)
Out[11]:
b value
0 1 1.601810
1 1 1.483431
2 1 -0.781733
3 2 0.000000
[4 rows x 2 columns]
要检查,请先在列上使用set(如果重复使用并且可能的值较少,则效率更高):
In [12]: b_unique = df.b.unique()
In [13]: b_unique
Out[13]: array([1])
即,
In [14]: if 2 in s: # equivalently use if 2 in df['b'].unique()
df.append(pd.Series({'value': 0, 'b': 2}), ignore_index=True)
In [15]: df
Out[15]:
b value
0 1 1.601810
1 1 1.483431
2 1 -0.781733
3 2 0.000000
[4 rows x 2 columns]
您可以对1执行相同的检查。