比较两个dataframe列以匹配percentag

2024-05-29 02:02:32 发布

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

我想将一列的数据帧与多列的另一个数据帧进行比较,并返回具有最大匹配百分比的列的标题。在

我在熊猫身上找不到匹配函数。第一个数据帧第一列:

cars
----   
swift   
maruti   
wagonor  
hyundai  
jeep

第一个数据帧第二列:

^{pr2}$

单列数据帧:

words
---------
swift 
RE 
maruti
waganor
hyundai
jeep
bajaj

期望输出:

100% match  header - cars

Tags: 数据函数re标题cars百分比wordsswift
3条回答

尝试使用pandas DataFrame的isin函数。假设df是第一个数据帧,words是一个列表:

In[1]: (df.isin(words).sum()/df.shape[0])*100
Out[1]:
cars     100.0
bikes     20.0
dtype: float64

您可能需要在df和words列表中使用小写字符串,以避免任何大小写问题。在

使用^{}^{}构造Series,然后调用^{}和{a4}方法:

# Setup
df1 = pd.DataFrame({'cars': {0: 'swift', 1: 'maruti', 2: 'waganor', 3: 'hyundai', 4: 'jeep'}, 'bikes': {0: 'RE', 1: 'Ninja', 2: 'Bajaj', 3: 'pulsar', 4: np.nan}})
df2 = pd.DataFrame({'words': {0: 'swift', 1: 'RE', 2: 'maruti', 3: 'waganor', 4: 'hyundai', 5: 'jeep', 6: 'bajaj'}})

match_rates = pd.Series({col: np.in1d(df1[col], df2['words']).mean() for col in df1})

print('{:.0%} match header - {}'.format(match_rates.max(), match_rates.idxmax()))

[出去]

^{pr2}$

您可以先将列放入列表中:

dfCarsList = df['cars'].tolist()
dfWordsList = df['words'].tolist()
dfBikesList = df['Bikes'].tolist()

然后迭代列表进行比较:

^{pr2}$

可以使用比输出更高的数字。在

相关问题 更多 >

    热门问题