Pandas:根据不同列中的数据填充列

时间:2017-11-17 17:35:55

标签: python pandas

我有以下数据框:

test_df['A'] = [100, 100, 100, 0, 0, 100, 100, 0, 100, 100, 100]
test_df['B'] = [100, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0]

我想要实现的是一个新的C列,如果我迭代B列并找到100值,那么我想转发填充,直到A列中有100个值。这将导致像这样的列:

test_df['C'] = [100, 100, 100, 0, 0, 0, 0, 0, 100, 100, 100]

这可以通过所有值的简单迭代来实现,具体如下:

test_df['C'] = 0
is_valid_row = False
for index, row in test_df.iterrows():
    if (row['B'] == 100):
        is_valid_row = True
    if (is_valid_row == True and row['A'] == 100):
        row['C'] = 100
    else:
        is_valid_row = False

我想问一下是否有更有效的方法可以用pandas或numpy实现相同的结果

1 个答案:

答案 0 :(得分:-2)

您可以使用apply方法。

def my_func(input):
   #do whatever

test_df['B'] = test_df['A'].apply(my_func)

你显然必须用你自己的代码填写它......