gpt4 book ai didi

python - 要么对数值进行操作,要么用 nan 替换单元格

转载 作者:行者123 更新时间:2023-11-28 17:18:44 25 4
gpt4 key购买 nike

pandas.DataFrame df 中,假设我有一列 E

如果 E 包含整数或 float ,我想用 10^6 * E 替换它。

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

是否有使用 applyapplymap 和 lambda 函数来执行此操作的简单方法?

作为完整性检查,对数字行执行此操作:

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

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

df['E'].apply(lambda x: x*1000000 if isinstance(x, (int, float)) else np.nan) 

也许我必须做一些转换,不确定。

最佳答案

您可以传递一个函数来代替 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

关于python - 要么对数值进行操作,要么用 nan 替换单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42590720/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com