让我说我有这个DF:
ID IGName Date_created
0 BananaMan 09/10/2018
1 Superman247 10/10/2009
2 123456789 08/03/2011
3 Nameless101 07/12/2012
我希望能够删除在DF中IGName
仅是数字的所有行。
像在此示例中一样,第3行是所有数字。我希望能够保留名称字母数字行,但不能保留仅包含数字的行。
我希望结果看起来像这样:
ID IGName Date_created
0 BananaMan 09/10/2018
1 Superman247 10/10/2009
3 Nameless101 07/12/2012
答案 0 :(得分:4)
您可以这样做:
import pandas as pd
data = [[0, 'BananaMan', '09/10/2018'],
[1, 'Superman247', '10/10/2009'],
[2, '123456789', '08/03/2011'],
[3, 'Nameless101', '07/12/2012']]
df = pd.DataFrame(data=data, columns=['ID', 'IGName', 'Date_created'])
df = df[~df['IGName'].str.isnumeric()]
print(df)
输出
ID IGName Date_created
0 0 BananaMan 09/10/2018
1 1 Superman247 10/10/2009
3 3 Nameless101 07/12/2012
检查“系列/索引”中每个字符串中的所有字符是否都 数字。等同于str.isnumeric()。
请注意,此解决方案假定列'IGName'
的类型为字符串,否则您需要将其强制转换为字符串,例如(如@RafaelC所述):
df['IGName'] = df['IGName'].astype(str)
答案 1 :(得分:0)
使用df[...]
:
print(df[~df['IGName'].str.isnumeric()])
或者:
print(df[df['IGName'].str.contains(r'\D+')])
两个输出:
ID IGName Date_created
0 0 BananaMan 09/10/2018
1 1 Superman247 10/10/2009
3 3 Nameless101 07/12/2012
如果IGName
具有整数,则执行以下操作:
print(df[pd.to_numeric(df.IGName, errors='coerce').notnull()])