我有以下数据框:
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实现相同的结果
答案 0 :(得分:-2)
您可以使用apply方法。
def my_func(input):
#do whatever
test_df['B'] = test_df['A'].apply(my_func)
你显然必须用你自己的代码填写它......