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