【问题标题】:Integrating two diff dataframes using contains condition and creating a new dataframe使用包含条件集成两个不同的数据框并创建一个新的数据框
【发布时间】:2020-01-16 00:07:28
【问题描述】:

第一个数据框如下所示:

OSIED  geometry
257005 POLYGON ((311852.712 178933.993, 312106.023 17...
017049 POLYGON ((272943.107 137755.159, 272647.627 13...
017032 POLYGON ((276637.425 146141.397, 276601.509 14...

第二个数据框如下所示:

small_area                                                   Median_BER
217099001/217112002/217112003/2570052005/217112...            212.9
047041005/047041001/2570051004/047041002/047041...            271.3
157041002/157041004/157041003/157041001/157129...            222.5

我需要使用“包含”条件在 col1(df2) 中搜索 col1(df1)。 如果它匹配/具有字符串,则从 df1 和 df2 获取相应的值

我尝试了合并、df.get 和 str.contains。 str.contains 有效,但我无法获取其他记录

输出应如下所示:

OSIED  geometry                                            small_area                                     Median_BER
257005 POLYGON ((311852.712 178933.993, 312106.023 17...  217099001/217112002/217112003/2570052005/217112
212.9
017049 POLYGON ((272943.107 137755.159, 272647.627 13...  047041005/047041001/2570051004/047041002/047041
222.5

【问题讨论】:

  • 数据框有多大?如果相对较小,则可以创建主键来连接两个表 - 首先通过拆分 small_area 并选择前 6d 位等。
  • 它是一个拥有 20k 条记录的庞大数据框
  • “这不是一个巨大的数据框”。斜线 sep 行总共有多少个唯一的小区号?
  • df3 = pd.DataFrame(columns=['small_area','OSIED','geometry','Median_BER']) 用于索引,sf.iterrows() 中的行:df3 = berdata[berdata ['small_area'].str.contains("25700")==True] #print ("Helloworld") df3.append(row['OSIED']) df3.append(row['geometry']) print (df3 ) 休息
  • 我可以从上面的代码中获取区号和中位数_BER..如何获取 geonetry 和 oseid col 值

标签: python pandas dataframe


【解决方案1】:

玩弄一些代码,我能够生成以下内容

small_area_oseid_df = pd.DataFrame(
   [
     {'OSIED': oseid[:6], 'median_ber': row['median_ber']} 
     for row in df.to_dict(orient='records') 
     for oseid in row['small_area'].split('/')
    ] 
)

然后您可以将这个表与OSIED 键上的第一个表连接起来。这取决于拆分中每行中有多少元素。因为这会爆炸您将创建的small_area_oseid_df 的维度。

【讨论】:

    猜你喜欢
    • 2018-05-26
    • 1970-01-01
    • 2012-11-25
    • 1970-01-01
    • 1970-01-01
    • 2019-09-18
    • 1970-01-01
    • 2019-09-23
    • 2023-03-20
    相关资源
    最近更新 更多