此问题在此处已有答案:
How do I create a new column where the values are selected based on existing columns?(13个回答)
17天前关闭。
新手在这里..但非常热情.我有很多的调查数据,我必须在一个新创建的列中派生一个值在一个基于0或1的多个其他列的嵌套框.
dftest = pd.DataFrame({'connection_0': ['0', '1','0','0','1'], 'connection_1': ['1', '0','1','1','0']},index=['819', '820','821','822','823'])
字符串
所以它是这样的:
connection_0 connection_1
819 0 1
820 1 0
821 0 1
822 0 1
823 1 0
型
我想在前面添加一个列“connect”,如果connection_0是“1”,则将该列的值设置为“none”,如果connection_1是"1",则将该列的值设置为“patient”。实际上,我有两个以上的列(connection_2等),但我可以稍后处理。我还有数千行数据,因此这只是一个测试 Dataframe 。
我想要的是-
connect connection_0 connection_1
819 patient 0 1
820 none 1 0
821 patient 0 1
822 patient 0 1
823 none 1 0
型
这是我的尝试,有点工作,但它设置所有'连接'到'无'
对于索引,dftest.iterrows()中的行:
if row[0]=="1": row.connect=row.connect.replace('1', 'none')
else:
if row[0]=="0" & row[1]=="1":row.connect=row.connect.replace('1', 'patient')
型
但我明白了
connect connection_0 connection_1
819 none 0 1
820 none 1 0
821 none 0 1
822 none 0 1
823 none 1 0
型
我知道我在做一些非常愚蠢的事情,所以任何帮助都将不胜感激!!
1条答案
按热度按时间uqdfh47h1#
验证码
如果你需要在其他列中添加类似的操作,而不是两列,似乎使用
np.select
是最好的方法。你可以通过添加cond#
来增加要应用的列数。字符串
输出:
型
让它更简洁:
型
如果所有列都包含“1”,也可以按以下方式执行。
让我们创建一个字典,它为每一列分配'1'时要分配的值,并将其分配给
m
。型