[英]Replicate F# map join in python
給定下面的 map a 和 map b,預期結果是 Z629B1601431F3398547EA8C 中的 val c。 我試圖在 python 中復制這種行為。
let join (p:Map<'a,'b>) (q:Map<'a,'b>) =
Map(Seq.concat [ (Map.toSeq p) ; (Map.toSeq q) ])
example:
let a = Map([1,11;2,21;3,31;])
let b = Map([3,32; 4,41;5,51;6,61;])
let c = join a b
and the result:
val c : Map<int,int> =
map [(1, 11); (2, 21); (3, 32); (4, 41); (5, 51); (6, 61)]
到目前為止,這是我在 python 中嘗試過的:
df_c = pd.concat([df_a,df_b], join='inner')
其中 df_a 和 df_b 有兩列包含與 F# 代碼中的變量 a 和變量 b 匹配的數據。 最終,我無法復制這種行為。 相反,我在 df_c 中得到了 df_a 和 df_b 中的所有結果。 任何幫助表示贊賞,謝謝。
可能不是大型數據幀的最佳解決方案。
>>> df_a = pd.DataFrame({"col1": [1,2,3], "col2":[11,21,31]})
>>> df_a
col1 col2
0 1 11
1 2 21
2 3 31
>>> df_b = pd.DataFrame({"col1": [3,4,5,6], "col2":[32,41,51,61]})
>>> df_b
col1 col2
0 3 32
1 4 41
2 5 51
3 6 61
>>> result_dict = dict(df_a.to_dict('split')['data'])
>>> result_dict
{1: 11, 2: 21, 3: 31}
>>> result_dict.update(dict(df_b.to_dict('split')['data']))
>>> result_dict
{1: 11, 2: 21, 3: 32, 4: 41, 5: 51, 6: 61}
>>> df_result = pd.DataFrame.from_dict(result_dict.items())
>>> df_result
0 1
0 1 11
1 2 21
2 3 32
3 4 41
4 5 51
5 6 61
>>>
如果需要/需要,您可以重命名列。
>>> df_result.rename(columns={0: "col1", 1: "col2"}, inplace=True)
>>> df_result
col1 col2
0 1 11
1 2 21
2 3 32
3 4 41
4 5 51
5 6 61
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.