在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替换它。
使用E
或apply
和lambda函数有一种简单的方法吗?
作为一个完整性检查,这样做适用于数字行:
applymap
这在语法上是正确的,但没有改变任何东西:
df['E'] = df['E'] * 1000000
也许我必须做一些演员,不确定。
答案 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