Pandas Python使用NaN实现数据帧操作

Pandas Python使用NaN实现数据帧操作,pandas,numpy,dataframe,nan,Pandas,Numpy,Dataframe,Nan,在pandas DataFrame上,我试图计算两个特性之间的百分比变化。例如: df = pd.DataFrame({'A': [100, 100, 100], 'B': [105, 110, 93], 'C': ['NaN', 102, 'NaN']}) 我试图计算df['A']-df['C']之间的变化,但在有'NaN'的行上,使用'B'列中的值 预期结果:[-5,-2,7] 因为,df['C'].loc[0]是NaN,所以第一个值是100-105(从'B')。 但第二个值是100-10

在pandas DataFrame上,我试图计算两个特性之间的百分比变化。例如:

df = pd.DataFrame({'A': [100, 100, 100], 'B': [105, 110, 93], 'C': ['NaN', 102, 'NaN']})
我试图计算
df['A']-df['C']
之间的变化,但在有'NaN'的行上,使用'B'列中的值

预期结果:
[-5,-2,7]
因为,
df['C'].loc[0]
是NaN,所以第一个值是
100-105
(从'B')。
但第二个值是
100-102

我认为最简单的是用另一列替换缺少的值,方法是:

另一个想法是通过以下方式测试缺失值:



真的很感激!你和熊猫相处得怎么样?我们可以做什么练习或只是体验一下吗?@rohan-这里有一些
#if need replace strings NaN to missing values np.nan
df['C'] = pd.to_numeric(df.C, errors='coerce')

s = df['A'] - df['C'].fillna(df.B)
print (s)
0   -5.0
1   -2.0
2    7.0
dtype: float64
a = np.where(df.C.isna(), df['A'] - df['B'], df['A'] - df['C'])
print (a)
[-5. -2.  7.]
s = df['A'] - np.where(df.C.isna(),  df['B'], df['C'])
print (s)
0   -5.0
1   -2.0
2    7.0
Name: A, dtype: float64