如何匹配两个数据框中的键并创建具有匹配键的新数据框?

2024-05-13 10:43:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有2个数据帧,其键如下:

测向:

Index(['artistName', 'artForm/nameOfArt/practicedSkill', 'state', 'district',
       'village', 'pinCode', 'dob/yearOfBirth/date', 'gender', 'phone',
       'email', 'differentlyAbled', 'languages', 'exp',
       'category/SC/ST/OBC/General', 'scheme', 'organisation'],
      dtype='object')

df1型:

Index(['S.NO', 'artForm/nameOfArt/practicedSkill','exp', 'organisation',
   'Complete Address of the organisation/individuals associated',
   'artistName', 'Father's Name', 'dob/yearOfBirth/date', 'gender',
   'languages', 'Address - 1', 'Address - 2', 'State', 'District',
   'Pin Code', 'phone', 'EXPERIENCE', 'scheme', 'Email id of artist ',
   'Submitted By'],
  dtype='object')

我想匹配键并从df1中选取所需的列来创建一个新的df。你知道吗

到目前为止我的代码(不起作用)

import pandas as pd
from difflib import get_close_matches
df = pd.DataFrame(columns = ['artistName', 'artForm/nameOfArt/practicedSkill', 'state', 'district', 'village', 'pinCode', 'dob/yearOfBirth/date', 'gender', 'phone', 'email', 'differentlyAbled', 'languages', 'exp', 'artAcademy', 'category/SC/ST/OBC/General', 'scheme'])
df1 = pd.read_excel("C:\\Users\\Desktop\\Culture\\Madur.xlsx")
df.apply(lambda x: x.astype(str).str.lower())
df1.apply(lambda x: x.astype(str).str.lower())
df2 = pd.DataFrame()
seq = [r for r in df.keys() if get_close_matches(r, df1.keys(), n=1, cutoff = .50)]
seq

序号=

    ['artistName',
 'artForm/nameOfArt/practicedSkill',
 'state',
 'district',
 'village',
 'pinCode',
 'dob/yearOfBirth/date',
 'gender',
 'phone',
 'email',
 'languages',
 'exp',
 'scheme',
 'organisation']

我想要的是从seq变量中选取列并生成df。有几个文件需要像这样与df进行比较。你知道吗

我能够从df1中提取需要选择的列,但是我该如何做呢?“finalList”包含需要从df1中选取的列的列表。你知道吗


Tags: dfdatephonegenderpdschemedf1languages
2条回答

如果我正确理解了这个问题,这应该是可行的:

  df_cols = df.columns
  df1_cols = df_1.columns

  new_col = []
  for col in df_cols:
      if col in df1_cols:
           new_col.append(col)

 df_new = df[new_col]

您就快到了-熊猫数据框可以毫无问题地接受列名列表:

seq = [r for r in df1.keys() if get_close_matches(r, df.keys(), n=1, cutoff = .50)]
df2 = df1[seq]

相关问题 更多 >