Python:如何用数据框中的条件替换NaN?

emax:

我有一个数据df1框,它对应nodes于网络value中的节点列表以及它们自己的节点,如下所示:

df
    node_i    node_j    value_i   value_j
0    3         4          89         33
1    3         2          89         NaN
2    3         5          89         69
3    0         2          45         NaN
4    0         3          45         89
5    1         2          109        NaN
6    1         8          109        NaN

我想添加一个w对应于的列(value_j如果存在该值)。如果value_j是,NaN我想将设置w为的相邻节点的平均值inode_i只有相邻节点NaN设置的情况下w=1

所以最终的数据帧应该像下面这样:

df
    node_i    node_j    value_i   value_j      w
0    3         4          89         33       33
1    3         2          89         NaN      51      # average of adjacent nodes
2    3         5          89         69       69
3    0         2          45         NaN      89      # average of adjacent nodes
4    0         3          45         89       89
5    1         2          109        NaN       1      # 1
6    1         8          109        NaN       1      # 1

我正在做如下循环,但我想使用apply

nodes = pd.unique(df['node_i'])
df['w'] = 0
for i in nodes:
    tmp = df[df['node_i'] == i]
    avg_w = np.mean(tmp['value_j'])
    if np.isnan(avg_w):
          df['w'][idx] = 1
    else:
          tmp.ix[tmp.value_j.isnull(), 'value_j'] = avg_w ## replace NaN with values
          df['w'][idx] = tmp['value_j'][idx]  
cncggvg:

您可以使用groupby以下方法:

fill_value = df.groupby("node_i")["value_j"].mean().fillna(1.0)
df["w"] = fill_value.reindex(df["node_i"]).values
df["w"][df["value_j"].notnull()] = df["value_j"][df["value_j"].notnull()]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据条件替换合并数据框中的 NaN --(Python,Pandas)

如何用单个NaN替换熊猫数据框中的多个NaN行

如何用与熊猫数据框中的单独NaN不同的值替换重复的NaN

如何用系列的值替换数据框的Nan?

检查NaN后如何用其日志替换数据框中的所有值

如何用条件替换Pandas数据框中所有列中的所有值

如何用交叉表中的数据替换python DataFrame中的NaN

如何用另一列替换python数据框中的特定数据

如何根据条件用NaN替换数据框列值?

如何有条件地替换数据框中的 NaN 值?

在python中,如何用列均值替换数据框中的特定值?

如何用dict熊猫python替换分组数据框

如何用单独的字典值替换数据框列 - python

如何用字典替换熊猫数据框中的值?

如何用熊猫数据框中的范围替换列值

如何用熊猫替换数据框中的部分标签?

Python:如何用一系列值替换Pandas数据框中的非零值

Python:如何用其他数组替换数组中的NaN

如何用NaN替换熊猫中的值?

如何用数组中的空格替换“ NaN”

如何用其他数据框中的ID替换数据框中的2列值?

如何用该数据框的子集替换数据框中的一行

如何用python中的文件中的数据替换列表项

如何用Python Pandas中的另一个替换数据框列中的字符串?

如何用python中其他数据框的条目替换一个数据框中的列丢失的条目?

如何用组中以前的非NaN替换NaN值

如何根据条件替换熊猫数据框中的值?

在熊猫数据框中替换nan

替换数据框中的NaN索引值