从python pandas中的列中删除数字

时间:2018-11-13 19:21:51

标签: python string pandas

我想删除Python pandas数据框中某个列的条目内的所有数字。不幸的是,诸如myapp/templates/wagtailadmin/base.html.join()之类的命令是不可迭代的(当我定义一个对条目进行迭代的函数时,它会告诉我一条消息,即浮动变量没有.find()和{{1 }}属性)。熊猫里有什么命令可以解决这个问题吗?

.find

3 个答案:

答案 0 :(得分:1)

您可以删除所有这样的号码:

import pandas as pd

df = pd.DataFrame ( {'x' : ['1','2','C','4']})
df[ df["x"].str.isdigit()  ] = "NaN"

答案 1 :(得分:0)

在没有数据样本的情况下无法确定,但是您的代码暗示data包含字符串,因为您在元素上调用了isdigit

假设以上所述,有许多方法可以执行您想要的操作。其中之一是条件列表理解:

import pandas as pd
s = pd.DataFrame({'x':['p','2','3','d','f','0']})
out = [ x if x.isdigit() else '' for x in s['x'] ]
# Output: ['', '2', '3', '', '', '0']

答案 2 :(得分:0)

或者考虑将pd.to_numericerrors='coerce'结合使用以将列转换为数字并消除非数字值:

使用@Raidex设置:

s = pd.DataFrame({'x':['p','2','3','d','f','0']})
pd.to_numeric(s['x'], errors='coerce')

输出:

0    NaN
1    2.0
2    3.0
3    NaN
4    NaN
5    0.0
Name: x, dtype: float64

编辑以处理两种情况。

s['x'].where(~s['x'].str.isdigit())

输出:

0      p
1    NaN
2    NaN
3      d
4      f
5    NaN
Name: x, dtype: object

OR

s['x'].where(s['x'].str.isdigit())

输出:

0    NaN
1      2
2      3
3    NaN
4    NaN
5      0
Name: x, dtype: object