gpt4 book ai didi

python - 如何删除 Pandas 中不以 'x' 开头的行或保留以 'x' 开头的行

转载 作者:太空狗 更新时间:2023-10-29 21:21:57 25 4
gpt4 key购买 nike

我整个早上都在做这件事,慢慢地把事情拼凑在一起。但是对于我的生活,我无法弄清楚如何在 Pandas 中使用 .str.startswith() 函数。

我的XLSX电子表格如下

1 Name, Registration Date, Phone number
2 John Doe, 2015-11-20T19:54:45Z, 1.1112223333
3 Jane Doe, 2015-11-20T20:44:26Z, 65.1112223333
etc...

所以我将它作为数据框导入,清理标题以便没有空格等,然后我想删除所有不以“1”开头的行。 (或保留以“1”开头的行)并删除所有其他行。因此,在这个简短的示例中,删除整个“Jane Doe”条目,因为她的电话号码以“65”开头。

import pandas as pd
df = pd.read_excel('testingpanda.xlsx', sheetname = 'Export 1')
def colHeaderCleaner():
cols = df.columns
cols = cols.map(lambda x: x.replace(' ', '_') if isinstance(x, (str, unicode)) else x)
df.columns = cols
df.columns = [x.lower() for x in df.columns]

colHeaderCleaner()

#by default it sets the values in 'registrant_phone' as float64, so this is fixing that...
df['registrant_phone'] = df['registrant_phone'].astype('object')

我得到的最接近的,我的意思是我能够执行而没有烦人的回溯和其他错误的唯一行是:

df['registrant_phone'] = df['registrant_phone'].str.startswith('1')

但所做的只是将所有电话值转换为“NaN”,它会保留所有行和所有内容,如下所示:

print df
[output] name, registration_date, phone_number
[output] John Doe, 2015-11-20T19:54:45Z, NaN
[output] Jane Doe, 2015-11-20T20:44:26Z, NaN

我已经搜索了太多地方甚至无法列出,我已经尝试了不同版本的 df.drop 但似乎无法弄清楚任何事情。我从这里去哪里?

最佳答案

我对你的问题有点困惑。在任何情况下,如果您有一个包含列 'c' 的 DataFrame df,并且您想要删除以 1 开头的项目,那么最安全的方法是使用类似的东西:

df = df[~df['c'].astype(str).str.startswith('1')]

关于python - 如何删除 Pandas 中不以 'x' 开头的行或保留以 'x' 开头的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35186291/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com