2017-06-16 83 views
1

很抱歉,如果這個問題已經問裝滿元組作爲元素熊貓領域,但我沒有在這裏或者別的地方找到它:通過切片

我要填寫一些帶有元組列的領域。目前,我將不得不訴諸:

import pandas as pd 
df = pd.DataFrame({'a': [1,2,3,4]}) 
df['b'] = '' 
df['b'] = df['b'].astype(object) 
mytuple = ('x','y') 
for l in df[df.a % 2 == 0].index: 
    df.set_value(l, 'b', mytuple) 

與DF的存在(這是我想要什麼)

a  b 
0 1   
1 2 (x, y) 
2 3   
3 4 (x, y) 

這看起來不是很優雅的我,可能不是很有效。而不是循環,我寧願像

df.loc[df.a % 2 == 0, 'b'] = np.array([mytuple] * sum(df.a % 2 == 0), dtype=tuple) 

哪(當然)不起作用。如何通過使用切片來改善我的上述方法?

回答

1
In [57]: df.loc[df.a % 2 == 0, 'b'] = pd.Series([mytuple] * len(df.loc[df.a % 2 == 0])).values 

In [58]: df 
Out[58]: 
    a  b 
0 1 
1 2 (x, y) 
2 3 
3 4 (x, y)