我如何有条件地连接

时间:2018-04-17 19:10:21

标签: python pandas

>>> df = pd.DataFrame({'col':['a',0]})
>>> df
  col
0   a
1   0
>>> df['col'] = 'str' + df['col'].astype(str)
>>> df
    col
0  stra
1  str0

我想要执行上述操作,但前提是df [' col']符合2个条件,即值的长度== 4,列中的值与选项列表中的一个匹配。

如果以前曾经问过这个问题,我一直在寻找,并且找不到可比的东西。

2 个答案:

答案 0 :(得分:1)

# The list of options
l = ['aaaa']

# The filtering conditions
cond_1 = df['col'].apply(lambda x: len(str(x)) == 4)
cond_2 = df['col'].isin(l)

然后,正如@Wen所指出的那样:

# The manipulation.
df.loc[(cond_1 & cond_2), 'col'] = 'str' + df['col'].astype(str)

答案 1 :(得分:1)

您可以使用numpy.where方法。这是示例

df = pd.DataFrame({'col':['abcd',0]})
df['col'] = df['col'].astype(str)

df['col'] = np.where(df['col'].str.len() == 4, df['col'] + 'b', df['col'] + 'a')
print(df)
#     col
# 0 abcdb
# 1    0a