Python 如何从特定字符串中清除数据集的某些列?

Python 如何从特定字符串中清除数据集的某些列?,python,pandas,numpy,dataframe,data-science,Python,Pandas,Numpy,Dataframe,Data Science,我正在尝试清理我的数据集。它有几个列包含所有字符串/float/int(对于name/pay/overtimepay)值,但很少有行包含“Not provided”作为值 newData = data[~data['BasePay'].isin(['Not Provided'])] newData = data[~data['BasePay'].str.contains('Not Provided', na=False)] print(newData['BasePay'].mean()) 及

我正在尝试清理我的数据集。它有几个列包含所有字符串/float/int(对于name/pay/overtimepay)值,但很少有行包含“Not provided”作为值

newData = data[~data['BasePay'].isin(['Not Provided'])]
newData = data[~data['BasePay'].str.contains('Not Provided', na=False)]
print(newData['BasePay'].mean())


清除“BasePay”列并计算平均值,但失败。如果你能帮忙,我将不胜感激

看起来您的数据在
未提供
未提供
之间有变化,且
p
较低,因此最好使用
df。将
替换为
regex=True
,包括此变化(
[pP]提供的
)。替换值的选择取决于如何处理数据,但这里我使用了numpy库中的
np.NaN
。替换后,您可以在带有
基本工资
的列上使用
fillna(0)
,但是列类型是
对象
,因此在计算平均值之前需要将其解释为float(
.astype(float)

作为数据.csv使用的输入

       ID               Name                    Occupation            Pay    OvertimePay        BasePay           Val4    Val5
0  148646   Carolyn A Wilson     Human Services Technician              0              0              0              0    0.00
1  148647       Not provided                  Not provided   Not Provided   Not Provided   Not Provided   Not Provided    0.00
2  148648     Joann Anderson   Communications Dispatcher 2              0              0              0              0    0.00
3  148649        Leon Walker                     Custodian              0              0              0              0    0.00
4  148650      Roy 1 Tillery                     Custodian              0              0              0              0    0.00
5  148651       Not provided                  Not provided   Not Provided   Not Provided   Not Provided   Not Provided    0.00
6  148652       Not provided                  Not provided   Not Provided   Not Provided   Not Provided   Not Provided    0.00
7  148653       Not provided                  Not provided   Not Provided   Not Provided   Not Provided   Not Provided    0.00
8  148654          Joe Lopez    Counselor, Log Cabin Ranch              0              0        -618.13              0 -618.13
基本工资平均值的输出

-68.68111111111111

Stack101建议:不要粘贴图像!这将增加你得到一个好答案的机会。。。而且可能在询问后10分钟内。。。将实际数据复制并粘贴到您的问题中。。。更好的方法是,粘贴代码以生成一个只有几行的虚拟/示例数据集,这样人们就可以复制粘贴它并快速为您进行训练和回答。
import pandas as pd
import numpy as np

df = pd.read_csv("data.csv", sep=";")
print(df)

df = df.replace("Not [pP]rovided", np.NaN, regex=True)

BasePay_mean = df["BasePay"].fillna(0).astype(float).mean()
print(BasePay_mean)
-68.68111111111111