2024-04-25 12:05:00 发布
网友
这是一个数据帧
a b c d nan nan 3 5 nan 1 2 3 1 nan 4 5 2 3 7 9 nan nan 2 3
我想将“a”列和“b”列中的观察值都替换为0,其中“a”列和“b”列中的第2行和第5行都有NaN,因此我只想将那些匹配NaN列中的行替换为0。你知道吗
所以我的输出必须是
a b c d 0 0 3 5 nan 1 2 3 1 nan 4 5 2 3 7 9 0 0 2 3
您可以根据a/b列上的条件创建布尔序列,然后使用loc修改相应的列和行:
loc
df.loc[df[['a','b']].isnull().all(1), ['a','b']] = 0 df # a b c d #0 0.0 0.0 3 5 #1 NaN 1.0 2 3 #2 1.0 NaN 4 5 #3 2.0 3.0 7 9 #4 0.0 0.0 2 3
或:
df.loc[df.a.isnull() & df.b.isnull(), ['a','b']] = 0
熊猫可能有一个更简单的内置功能,但这个应该可以工作。你知道吗
df[['a', 'b']] = df.ix[ (np.isnan(df.a)) & (np.isnan(df.b)), ['a', 'b'] ].fillna(0)
实际上,@Psidom的解决方案更容易阅读。你知道吗
您可以根据a/b列上的条件创建布尔序列,然后使用
loc
修改相应的列和行:或:
熊猫可能有一个更简单的内置功能,但这个应该可以工作。你知道吗
实际上,@Psidom的解决方案更容易阅读。你知道吗
相关问题 更多 >
编程相关推荐