【发布时间】:2014-05-18 17:23:15
【问题描述】:
我有一个包含很多列的数据框,其中列名符合特定字符串模式的任意数量。如果任何其他列中包含“r”,我想创建一个设置为“r”的新列。我可以这样做:
for col in df.columns:
if 'abc' in col:
for i in df.index:
if df.ix[i, col] == 'r':
df.ix[i, 'newcol'] = 'r'
但是这有点丑陋和缓慢。有没有更快的方法来做到这一点?
编辑:包括我的源数据的示例:
df = pd.DataFrame({'abc1':['r','r','n','n'], 'abc2':['r','n','n','r'], 'xyz1':['r','n','n','n'], 'xyz2':['n','n','r','n']})
我需要的输出(在'newcol'中)是:
abc1 abc2 xyz1 xyz2 newcol
0 r r r n r
1 r n n n r
2 n n n r nan
3 n r n n r
(只要不是 'r',nan 几乎可以用任何东西代替)。
或者 newcol 可以包含 True, True, False, True 这对于我的目的也可以正常工作。
【问题讨论】: