熊猫DataFrame:如果满足多个条件,则将整数分配给新列
问题描述:
我试图在熊猫数据框中创建一个新列,然后根据条件格式分配一个整数值。一个例子是:熊猫DataFrame:如果满足多个条件,则将整数分配给新列
如果((A> 1)&(一个< 5))得到值10,如果((A> = 5)&(一个< 10))得到的值24,如果((一> 10)&(a < 5))给出值57
其中'a'是数据框中的另一列。
有没有办法做到这一点与熊猫/ numpy没有创建一个函数?我尝试了几种不同的选择,但都没有成功
答
我想这样做,而无需创建功能将是非常迂回的任何方式,但它实际上不是太糟糕了功能。此外,你的条件并不真正相互关联,但我认为这是一个错字。如果你的条件比较简单,可以快速定义你的功能,让您的代码紧凑:
df['new column'] = df['a'].apply(lambda x: 10 if x < 5 else 24 if x < 10 else 57)
,可以得到一点毛茸茸的,如果你的条件,更complicatied - 这是更容易,如果你定义的功能来管理更明确:
def f(x):
if x > 1 and x < 5: return 10
elif x >= 5 and x < 10: return 14
else: return 57
df['new column'] = df['a'].apply(f)
如果你真的想避免的功能,我能想到的是创建一个新的列表为新柱,通过你的数据迭代,然后将它添加到您的数据框填充它的最好的:
newcol = []
for a in df['a'].values:
if x > 1 and x < 5: newcol.append(10)
elif x >= 5 and x < 10: newcol.append(24)
else: newcol.append(57)
df['newcol'] = newcol
发布您的数据框的例子会有所帮助。可能很难理解这个。数据框中的'a'是另一列吗?或一些随机变量? – Abhishek