Pandas DataFrame检查其他列中的colums值

时间:2015-10-31 10:47:49

标签: python pandas

我的test_df包含了列&#​​39; MonthAbbr'和' PromoInterval'

示例输出

1017174           Jun  Mar,Jun,Sept,Dec
1017175           Mar  Mar,Jun,Sept,Dec
1017176           Feb  Mar,Jun,Sept,Dec
1017177           Feb  Feb,May,Aug,Nov
1017178           Jan  Feb,May,Aug,Nov
1017179           Jan  Mar,Jun,Sept,Dec
1017180           Jan  Mar,Jun,Sept,Dec

我想在促销间隔中添加列 - 指标是月份,如果当前行的PromoInterval中为MonthAbbr,则为= 1,否则为

有更有效的方法吗?

for ind in test_df.index:
  test_df.set_value(ind ,'IsPromoInThisMonth',
  test_df.MonthAbbr.astype(str)[ind] in (test_df.PromoInterval.astype(str)[ind])

1 个答案:

答案 0 :(得分:0)

这有点快:

INFO DATE module.py:427 [default] Detected file changes:
    .git
    .git\logs\HEAD

比你的方法:

%%timeit
test_df['IsPromoInThisMonth'] = [x in y for x, y in zip(test_df['MonthAbbr'], 
                                                        test_df['PromoInterval'])]

1000 loops, best of 3: 317 µs per loop

<强>更新

使用%%timeit for ind in test_df.index: test_df.set_value(ind ,'IsPromoInThisMonth', test_df.MonthAbbr.astype(str)[ind] in (test_df.PromoInterval.astype(str)[ind])) 1000 loops, best of 3: 1.44 ms per loop 的函数比列表理解慢:

apply