操作数值或用nan替换单元格

时间:2017-03-04 00:41:58

标签: python pandas dataframe lambda

ok <- ! is.na(subset$A) plot(A ~ Time, subset, subset = ok, type = "l", xlim = xlim, ylim = ylim) df中,假设我有一列pandas.DataFrame

如果E包含整数或浮点数,我想用E替换它。

但是如果10^6 * E包含非数字字符或只是空格,我想用np.nan替换它。

使用Eapply和lambda函数有一种简单的方法吗?

作为一个完整性检查,这样做适用于数字行:

applymap

这在语法上是正确的,但没有改变任何东西:

df['E'] = df['E'] *  1000000 

也许我必须做一些演员,不确定。

1 个答案:

答案 0 :(得分:2)

您可以传递函数而不是lambda。这样的事情似乎有效。

<强>代码:

def times_million(a_number):
    try:
        return float(a_number) * 1000000
    except:
        return np.nan

测试代码:

import pandas as pd
import numpy as np 

data = [x.strip().split() for x in """
    E
    1.0
    1
    xyzzy
""".split('\n')[1:-1]]
df = pd.DataFrame(data=data[1:], columns=data[0])

print(df['E'].apply(times_million))

<强>结果:

0    1000000.0
1    1000000.0
2          NaN
Name: E, dtype: float64