簡體   English   中英

用字符串比較和連接兩個不同的數據幀?

[英]Comparison and join of two different data frames with strings?

我想比較兩個字符串,然后根據字符串中的公共序列將它們連接起來。

數據如下:

數據1:

Kansas
Sacramento
Miami
Toronto

DATA2

Kansas_county
Sacramento_county
Miami_county
Vegas_county

理想的結果是:

col_data1            col_data2
Kansas               Kansas_county   
Sacramento           Sacramento_county
Miami                Miami_county
Toronto              N/A
N/A                  Vegas_county

問題是:

  • 如何在兩個源數據集中搜索公用字符串?
  • 如何獲取data1的內容,然后選擇包含字符串的data2的對應行?
  • 然后如何將它們加入?

非常感謝。

您可以將新列添加到第一個DataFrame中,然后使用pandas.merge()

>>> df1 = pd.DataFrame({'col':['Kansas', 'Sacramento', 'Miami', 'Toronto']})
>>> df2 = pd.DataFrame({'col':['Kansas_county', 'Sacramento_county', 'Miami_county', 'Vegas_county']})
>>>
>>> df1['county'] = df1['col'] + '_county'
>>>
>>> dfN = pd.merge(df1, df2, how='outer', left_on='county', right_on='col', suffixes=['_data1', '_data2'])
>>>
>>> del dfN['county']
>>> dfN
    col_data1          col_data2
0      Kansas      Kansas_county
1  Sacramento  Sacramento_county
2       Miami       Miami_county
3     Toronto                NaN
4         NaN       Vegas_county

以羅曼的答案為基礎,您可以定義一個函數來格式化您的數據列之一,例如

In [105]: df1 = pd.DataFrame({'col':['Kansas', 'Sacramento', 'Miami', 'Toronto']})
In [106]: df2 = pd.DataFrame({'col':['Kansas_county', 'Sacramento_county', 'Miami_county', 'Vegas_county']})

In [107]: def f(x,delm='_'):
     ...      return x.split(delm)[0]

In [108]: df2['map_index'] = df2.col.map(lambda x: f(x))
In [109]: df2
Out[109]: 
                 col   map_index
0      Kansas_county      Kansas
1  Sacramento_county  Sacramento
2       Miami_county       Miami
3       Vegas_county       Vegas

In [110]: dfN = pd.merge(df1, df2, how='outer', left_on='col', right_on='map_index')

In [111]: dfN
Out[111]: 
        col_x              col_y   map_index
0      Kansas      Kansas_county      Kansas
1  Sacramento  Sacramento_county  Sacramento
2       Miami       Miami_county       Miami
3     Toronto                NaN         NaN
4         NaN       Vegas_county       Vegas

這基本上與Roman概述的功能相同,但是為您提供了更通用的格式設置功能(通過您要在函數中添加的任何內容,其中可以包括正則表達式解析等)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM