以另一个列值为条件创建pandas列

时间:2017-11-16 01:58:56

标签: python pandas numpy

我试图在pandas数据框中创建一个类列,条件是另一个列值。如果另一列的i + 1值大于i值,则该值为1,否则为0。

例如:

column1 column2
   5       1
   6       0
   3       0
   2       1
   4       0

如何通过迭代column1创建column2?

2 个答案:

答案 0 :(得分:2)

您可以在第一列上使用diff方法,其周期为-1,然后检查它是否小于零以创建第二列。

import pandas as pd

df = pd.DataFrame({'c1': [5,6,3,2,4]})
df['c2'] = (df.c1.diff(-1) < 0).astype(int)

df
# returns:
   c1  c2
0   5   1
1   6   0
2   3   0
3   2   1
4   4   0

答案 1 :(得分:0)

您也可以使用shift。性能几乎与diff相同,但diff似乎更快一点。

df = pd.DataFrame({'column1': [5,6,3,2,4]})
df['column2'] = (df['column1'] <df['column1'].shift(-1)).astype(int)
print(df)
   column1  column2
0        5        1
1        6        0
2        3        0
3        2        1
4        4        0