Python 从数据框中删除不是数字或日期的行

Python 从数据框中删除不是数字或日期的行,python,pandas,Python,Pandas,我有一个类似的问题,除了我的列中有数字、文本和日期,而不是只有数字和文本。如何删除除数字和日期以外的所有行 例如,我有一个通用数据框: 身份证件 数字和日期 1. 40 2. 1/1/2021 3. AABBC 4. 20 5. 1/2/2021 您可以创建两个系列来检查日期和数字,分别为to_datetime和to_numeric,并且只保留notnull的非空行。传递错误=“强制”将null返回为非日期/非数字: dates = pd.to_datetime(df['Nums and Dat

我有一个类似的问题,除了我的列中有数字、文本和日期,而不是只有数字和文本。如何删除除数字和日期以外的所有行

例如,我有一个通用数据框:

身份证件 数字和日期 1. 40 2. 1/1/2021 3. AABBC 4. 20 5. 1/2/2021
您可以创建两个系列来检查日期和数字,分别为to_datetime和to_numeric,并且只保留notnull的非空行。传递错误=“强制”将null返回为非日期/非数字:

dates = pd.to_datetime(df['Nums and Dates'], errors='coerce')
nums = pd.to_numeric(df['Nums and Dates'], errors='coerce')
df[(dates.notnull()) | (nums.notnull())]

Out[1]:
   id  Nums and Dates
0   1              40
1   2        1/1/2021
3   4              20
4   5        1/2/2021

您可以创建两个系列来检查日期和数字,分别为to_datetime和to_numeric,并且只保留notnull的非空行。传递错误=“强制”将null返回为非日期/非数字:

dates = pd.to_datetime(df['Nums and Dates'], errors='coerce')
nums = pd.to_numeric(df['Nums and Dates'], errors='coerce')
df[(dates.notnull()) | (nums.notnull())]

Out[1]:
   id  Nums and Dates
0   1              40
1   2        1/1/2021
3   4              20
4   5        1/2/2021

假设数据框的名称为df,列的名称为Nums和Dates,请尝试以下操作:

not_str_values = [value for value in df if type(value) is not str]
然后:


假设数据框的名称为df,列的名称为Nums和Dates,请尝试以下操作:

not_str_values = [value for value in df if type(value) is not str]
然后:


使用contains和regex,您可以一次通过该列。您可以删除 有字母表的行

df[~df['Nums and Dates'].str.contains(r'[A-Za-z]', regex=True)]

id  Nums and Dates
0   1   40
1   2   1/1/2021
3   4   20
4   5   1/2/2021

使用contains和regex,您可以一次通过该列。您可以删除 有字母表的行

df[~df['Nums and Dates'].str.contains(r'[A-Za-z]', regex=True)]

id  Nums and Dates
0   1   40
1   2   1/1/2021
3   4   20
4   5   1/2/2021

欢迎来到StackOverflow!请记住通过单击答案旁边的复选标记接受最佳解决方案作为答案。非常感谢。请参阅以下内容了解更多信息:欢迎使用StackOverflow!请记住通过单击答案旁边的复选标记接受最佳解决方案作为答案。非常感谢。有关更多信息,请参见以下内容: