2013-04-12 23 views
2

說我有兩個dataframes:pd1pd2對多個dataframes工作定義操作

pd1 = 
     A  B  C 
1 hello foo hello 
2 foo bar hello 
3 world bar world 
4 world bar world 

pd2 = 

    A B C 
1 8 0 3 
2 8 5 2 
3 4 7 0 
4 4 1 3 

,說我想要做的東西像下面創建第三個數據幀結果

 A   B  C 
1 hello;8 foo;0 hello;3 
2 foo;8 bar;5 hello;2 
3 world;4 bar;7 world;2 
4 world;4 bar;1 world;0 

雖然我可以通過e非常的位置,索引兩個數據框,並在第三個數據框中連接結果,我想知道我能否做得更好。

閱讀有關applymap我不知道是否有定義和應用上對dataframes的合作運營商的類似的方式。例如,對於上面的問題,我可以定義以下操作:

def f(x,y):  
    return str(x) + ';' + str(y) 

f(x,y)哪裏是操作逐元素的功能。

這個想法可以擴展到多個dataframes(大於2)。 Pandas中有什麼支持這種多數據框架操作符的定義嗎?

+0

感謝@AndyHayden我已經更新了OP –

+0

到downvoter,請你解釋一下? –

回答

1

你已經可以做到這一點,只是applymap字符串化;在「+」串接

In [14]: df1.applymap(str) + df2.applymap(lambda x: ';%s' % x) 
Out[14]: 
    A 
0 0;0 
1 1;2 
2 2;4 
3 3;6 
4 4;8 

習題效率不是很高,也許你應該剛剛創建要與隨後的九月to_csv列「;」?

+0

我想泛化應該是類似於'pd.DataFrame.add(* [df.applymap(str)+';'爲df在dfs])。applymap(lambda x:x [: - 1])''? – DSM

+0

我想你可能需要迭代地進行擴展,比如'''''x = dfs [0];對於df中的df [1:]:x + = df'',因爲''.add''只接受二進制 – Jeff