![](/img/trans.png)
[英]How to take difference of matching df['keys'] and create new column for them
[英]How to match keys of 2 data frames and create new df with matching keys?
我有 2 个 DataFrame,它们的键如下所示:
df:
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
中选取的列列表。
如果我理解正确的问题,这应该有效:
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]
你快到了——Pandas 数据框毫无问题地接受列名列表:
seq = [r for r in df1.keys() if get_close_matches(r, df.keys(), n=1, cutoff = .50)]
df2 = df1[seq]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.