在Pandas DataFrame Python中添加新列

San*_*nez 45 python dataframe pandas

我在Pandas中有数据帧,例如:

Col1 Col2
A     1 
B     2
C     3
Run Code Online (Sandbox Code Playgroud)

现在,如果我想添加另一个名为Col3的列,并且该值基于Col2.在公式中,如果Col2> 1,则Col3为0,否则为1.因此,在上面的示例中.输出将是:

Col1 Col2 Col3
A    1    1
B    2    0
C    3    0
Run Code Online (Sandbox Code Playgroud)

有关如何实现这一点的任何想法?

Vik*_*kez 64

你只是做了相反的比较.if Col2 <= 1.这将返回一个布尔系列,False其中包含大于1的True值和另一个的值.如果你将它转换为int64dtype,True变成1False成为0,

df['Col3'] = (df['Col2'] <= 1).astype(int)
Run Code Online (Sandbox Code Playgroud)

如果你想要一个更通用的解决方案,你可以Col3根据Col2你的值分配任何数字,例如:

df['Col3'] = df['Col2'].map(lambda x: 42 if x > 1 else 55)
Run Code Online (Sandbox Code Playgroud)

要么:

df['Col3'] = 0
condition = df['Col2'] > 1
df.loc[condition, 'Col3'] = 42
df.loc[~condition, 'Col3'] = 55
Run Code Online (Sandbox Code Playgroud)