Pandas 通过切片将元组作为元素填充字段

Pandas 通过切片将元组作为元素填充字段,pandas,tuples,slice,Pandas,Tuples,Slice,对不起,如果以前有人问过这个问题,我在这里或其他地方都找不到: 我想用元组填充列的一些字段。目前,我不得不求助于: 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) 有

对不起,如果以前有人问过这个问题,我在这里或其他地方都找不到:

我想用元组填充列的一些字段。目前,我不得不求助于:

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(这就是我想要的)

在我看来,这不是很优雅,可能也不是很有效。而不是循环,我更喜欢这样的东西

df.loc[df.a % 2 == 0, 'b'] = np.array([mytuple] * sum(df.a % 2 == 0), dtype=tuple)
这(当然)不起作用。如何通过使用切片来改进上述方法

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)
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)