2024-05-29 02:02:32 发布
网友
我想将一列的数据帧与多列的另一个数据帧进行比较,并返回具有最大匹配百分比的列的标题。在
我在熊猫身上找不到匹配函数。第一个数据帧第一列:
cars ---- swift maruti wagonor hyundai jeep
第一个数据帧第二列:
单列数据帧:
words --------- swift RE maruti waganor hyundai jeep bajaj
期望输出:
100% match header - cars
尝试使用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}方法:
Series
# 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()))
[出去]
您可以先将列放入列表中:
dfCarsList = df['cars'].tolist() dfWordsList = df['words'].tolist() dfBikesList = df['Bikes'].tolist()
然后迭代列表进行比较:
可以使用比输出更高的数字。在
尝试使用pandas DataFrame的isin函数。假设df是第一个数据帧,words是一个列表:
您可能需要在df和words列表中使用小写字符串,以避免任何大小写问题。在
使用^{} 和^{} 构造} 和{a4}方法:
Series
,然后调用^{[出去]
^{pr2}$您可以先将列放入列表中:
然后迭代列表进行比较:
^{pr2}$可以使用比输出更高的数字。在
相关问题 更多 >
编程相关推荐