gpt4 book ai didi

python - 删除 pandas 中不包含值的行

转载 作者:太空宇宙 更新时间:2023-11-03 17:11:59 25 4
gpt4 key购买 nike

我已经尝试了很多方法,但似乎无法得到有效的方法。基本上我有一个 XLSX 文件,其中有 3 列(姓名、电子邮件、电话号码),然后有许多行。电话号码以不同的国家/地区代码开头“+1.xxxxxxxxx”、“+90.xxxxxxxxx”、“+34”。我想做的第一件事是删除所有不以“+1”开头的行。并且想通过删除明显虚假和/或不完整的电话号码来进一步过滤,例如,有时人们使用“+1.5555555555”或不给我完整的号码,所以我会得到“+1.12345678”(不是完整的10位数字)数字,如果数“+1”则为 13。)。完成所有操作后,将其写入.csv。

到目前为止我的代码如下:

import pandas as pd

xl_file = pd.ExcelFile('testexcel.xlsx')
df = xl_file.parse('Sheet 1', index_col='Name', na_values=['NA'])
#df.drop(df.columns[[0]], axis=1, inplace=True)
df = df[df['Phone'] != '+1.*']
df.to_csv('testingpandas.csv')

#df.drop... 组件只是我在玩 df.dop 并删除整个列。下一行是我尝试使用 this answer 来获得我想要的结果,但我只是找不到正确的结果。末尾的“*”是我认为的通配符。

最好过滤“+1”,然后编写一些内容,然后删除该列中总字符串计数不为 13 的行吗?

最佳答案

您可以使用 pandas 索引来过滤行,或编写自定义函数。

为了举例,我将展示两种方法,仅保留以 +1 开头且长度为 13 的行。

pandas 索引:

df = df[(df['Phone'].str.startswith('+1')) & (df['Phone'].str.len() == 13)]

另一种方式,自定义方法:

def filter_by_beginning_and_len(phone):
return str(phone).startswith('+1') and len(str(phone)) == 13

df = df[df['Phone'].apply(filter_by_beginning_and_len)]

关于python - 删除 pandas 中不包含值的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33976147/

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