2016-12-16 40 views
0

值長度需要你的幫助溫暖~~請~~過濾器和計算數據幀的蟒蛇包含在不同的列

我有兩個DataFrames(DF1和DF2)象下面這樣:!

DF1 :

a | b 
---- | ---- 
a1 | b1 
a2 | b2 
a3 | b3 
a4 | b4 

DF2:

c 
----: 

a1+b1 

a3+b3 

a3+b4+b3+a4 

a1+b2+b3+a4+b1 

a4+b4 

a4+b4+b1 

我想過濾並計算長度Ò ˚FDF2包含值在兩個df1.a和df1.b,象下面這樣:

a |b |new_col 
---|---|--- 
a1 |b1 |2 
a2 |b2 |0 
a3 |b3 |3 
a4 |b4 |3 

例如:數字2表示

2 = len(df2[(df2.c.str.contains('a1')) & (df2.c.str.contains('b1'))]) 

真實的情況是我在同時具有過1行df1和df2,任何人都可以幫忙嗎?

非常感謝!

+0

你應該在4使用Ctrl-K塊或縮進格式化你的代碼空間。謝謝 –

+0

謝謝〜我會〜 –

+0

這些熊貓數據框? –

回答

0

我終於得到了答案:

code screenshot

result screenshot

代碼:

df1 = pd.DataFrame({'a': ['a1', 'a2', 'a3', 'a4'], 'b': ['b1', 'b2', 'b3', 'b4']}) 
    df2 = pd.DataFrame({'c': ['a1+b1', 'a3+b3', 'a3+b4+b3+a4', 'a1+b2+b3+a4+b1+a3', 'a4+b4', 'a4+b4+b1']}) 

    df1['and_col'] = df1['a'] + '.*' + df1['b'] + '|' + df1['b'] + '.*' + df1['a'] 

    df1['or_col'] = df1['a'] + '|' + df1['b'] 

    def count(x): 
     return len(df2[df2.c.str.contains(x)]) 

    df1['and_count'] = df1['and_col'].map(count) 

    df1['or_count'] = df1['or_col'].map(count) 

    print df1