如何用NaN替换相应的行值?

2024-10-04 01:26:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含两列的csv文件。”“组”和“x”。“组”的值为0或1。“x”的值是大约3位数字。我试图计算数据子集的平均值。例如,“x”列中“组”中有0的所有行的平均值,以及“组”中有1的所有行的平均值。目前,“组”中的0被NaN替换,但“x”值不变,因此结果仍然是总平均值,而不是子集

对于数据帧,dict可以指定在不同的列中替换不同的值。例如,{a':1,'b':'z'}查找列“a”中的值1和列“b”中的值“z”,并用值中指定的值替换这些值。在这种情况下,value参数不应为None。您可以将此视为传递两个列表的特殊情况,除非指定要搜索的列

我看到了上面的文档,但我不能使用它,因为“x”列中的值都不同。有1000行。我想这可能和axis有关,但我还是有点模糊

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

normalData = pd.read_csv('NormalSample.csv')

normalData = normalData.replace(0, np.nan)

print(normalData.mean())
^{tb1}$
^{tb2}$

Tags: 文件csv数据importvalueasnp情况
1条回答
网友
1楼 · 发布于 2024-10-04 01:26:44

因为我相信您只有2列,所以可以这样使用direct apply:

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

normalData = pd.read_csv('NormalSample.csv')

normalData[normalData['group'] == 0] = np.nan

print(normalData.mean())

然而,根据我相信你们想要计算的,即组=0的所有x的平均值和组=1的所有x的平均值,我建议如下:

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

normalData = pd.read_csv('NormalSample.csv')
mean_0 = normalData[normalData['group']==0]['x'].mean()
mean_1 = normalData[normalData['group']==1]['x'].mean()

相关问题 更多 >