首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Pandas DataFrame中找到`?‘,只查看行和列(’?‘的位置)

在Pandas DataFrame中找到`?‘,只查看行和列(’?‘的位置)
EN

Stack Overflow用户
提问于 2021-11-24 20:51:12
回答 1查看 21关注 0票数 0

情况

  • 接受.csv文件
  • ,将所有非ascii字符替换为具有?.csv行和列,并显示它们的位置(在df或列表中)

样本码

代码语言:javascript
复制
df = pd.read_csv('../test.csv', sep='|', skiprows=1)
find_non_ascii = df.select_dtypes(object)
df[find_non_ascii.columns] = find_non_ascii.apply(lambda x: x.str.encode("ascii", "replace").str.decode("ascii")
)
df2 = df[find_non_ascii.columns]
quest = '\\?'
lster = []
try:
    for col in cols:
        df3 = df2.loc[df2[f'{col}'].str.contains(quest, na=False)]
        if df3.items():
            lster.append(df3)

except Exception as e:
    print(e)
print(lster)

输出

代码语言:javascript
复制
[    NAME EARPHONES MODEL_NUMBER   ID  CAR
 0  d?fgh      ?g?s          s-s  d?d  asd,
     NAME EARPHONES MODEL_NUMBER   ID  CAR
 0  d?fgh      ?g?s          s-s  d?d  asd
 1    dfg        A?          NaN   af    a,
 Empty DataFrame
 Columns: [NAME, EARPHONES, MODEL_NUMBER, ID, CAR]
 Index: [],
     NAME EARPHONES MODEL_NUMBER   ID  CAR
 0  d?fgh      ?g?s          s-s  d?d  asd,
 Empty DataFrame
 Columns: [NAME, EARPHONES, MODEL_NUMBER, ID, CAR]
 Index: []]```
EN

回答 1

Stack Overflow用户

发布于 2021-11-24 22:53:50

您可以使用df.apply为每一行创建一个掩码(True/False),在这种情况下,df很可能是df2,但为了简单起见,我将其保留为df

代码语言:javascript
复制
df['mask'] = df.apply(lambda x: any(x[col].__contains__('?') for col in df.columns), axis = 1)

然后,可以使用此掩码筛选数据,只显示掩码为True的行(行包含任何'?')。

代码语言:javascript
复制
df.loc[df['mask']]

并删除结果中显示的掩码列。

代码语言:javascript
复制
df.loc[df['mask'],df.columns[:-1]]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70102769

复制
相关文章

相似问题

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