首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pandas将打印结果转换为数据帧

Pandas将打印结果转换为数据帧
EN

Stack Overflow用户
提问于 2021-03-30 16:45:54
回答 2查看 50关注 0票数 0

我有密码指纹看起来很奇怪。我想修好它

*印刷品

代码语言:javascript
复制
     Matching      Score
0  john carry  73.684211
       Matching  Score
0  alex midlane   80.0
       Matching  Score
0  alex midlane   50.0
      Matching      Score
0  robert patt  53.333333
      Matching      Score
0  robert patt  70.588235
      Matching  Score
0  david baker  100.0

*我需要此格式

代码语言:javascript
复制
  | Matching     |   Score    |
  | ------------ | -----------|
  | john carry   |  73.684211 |
  | alex midlane |  80.0      |
  | alex midlane |  50.0      |
  | robert patt  |  53.333333 |
  | robert patt  |  70.588235 |
  | david baker  |  100.0     |

*我的代码

代码语言:javascript
复制
import numpy as np
import pandas as pd
from rapidfuzz import process, fuzz
df = pd.DataFrame({
    "NameTest": ["john carry", "alex midlane", "robert patt", "david baker", np.nan, np.nan, np.nan],
    "Name": ["john carrt", "john crat", "alex mid", "alex", "patt", "robert", "david baker"]
})

NameTests = [name for name in df["NameTest"] if isinstance(name, str)]

for Name in df["Name"]:
    if isinstance(Name, str):
        match = process.extractOne(
            Name, NameTests,
            scorer=fuzz.ratio,
            processor=None,
            score_cutoff=10)
        data = {'Matching': [match[0]],
                'Score': [match[1]]}
    df1 = pd.DataFrame(data)

    print(df1)

我试过很多方法。但得到了同样的指纹

谢谢你的建议。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-30 17:05:36

您可以在每个循环中创建一个新的数据帧。您可以将结果存储在全局字典中,并在循环后从该字典创建数据帧。

代码语言:javascript
复制
data = {'Matching': [], 'Score': []}

for Name in df["Name"]:
    if isinstance(Name, str):
        match = process.extractOne(
            Name, NameTests,
            scorer=fuzz.ratio,
            processor=None,
            score_cutoff=10)
        data['Matching'].append(match[0])
        data['Score'].append(match[1])

df1 = pd.DataFrame(data)
票数 1
EN

Stack Overflow用户

发布于 2021-03-30 17:21:02

您需要一个数组或一个列表来保存所有数据(我使用一个数组),因为您将在每个循环中创建一个数据帧

代码语言:javascript
复制
data = []
for Name in df["Name"]:
    if isinstance(Name, str):
        match = process.extractOne(
            Name, NameTests,
            scorer=fuzz.ratio,
            processor=None,
            score_cutoff=10)
        print(match[0])
        data.append({'Matching': match[0],
                'Score': match[1]})
        
df1 = pd.DataFrame(data)
print(df1)

以下是输出

enter image description here

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66867553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档