如何消除表pandas中的行

时间:2017-08-02 15:52:58

标签: python python-3.x pandas csv

我有一个小脚本,用pandas打开.csv文件。该文件适用于房屋及其价格,但有些房屋标记为0平方英尺,仍然是定价的。这会弄乱我的数据,那么有没有办法在sq__ft列中完全删除值为0的所有行?感谢。

digits = pandas.read_csv('C:/Users/saeed/Downloads/Sacramentorealestatetransactions.csv')

print(tabulate(digits, headers='keys', tablefmt='psql'))

with open('C:/Users/saeed/Downloads/Sacramentorealestatetransactions.csv') as i:
    sqft = [int(row["sq__ft"]) for row in DictReader(i)]
    print(sqft)

with open('C:/Users/saeed/Downloads/Sacramentorealestatetransactions.csv') as i:
    price = [int(row["price"]) for row in DictReader(i)]
    print(price)

2 个答案:

答案 0 :(得分:0)

使用boolean indexingquery

df[df['sqft'] != 0]
df.query("sqft != 0")

样品:

df = pd.DataFrame({'sq__ft':[0,2,3], 'price':[3,4,6]})
print (df)
   price  sq__ft
0      3       0
1      4       2
2      6       3

df1 = df[df['sq__ft'] != 0]
print (df1)
   price  sq__ft
1      4       2
2      6       3

df1 = df.query("sq__ft != 0")
print (df1)

   price  sq__ft
1      4       2
2      6       3

编辑:

如果0不是integer,而string则添加''

df1 = df[df['sqft'] != '0']

答案 1 :(得分:0)

您可以使用:

df = df[~(df.sqft == 0)]

df = df[df.sqft != 0]

以下是关于这些操作如何在可再现示例上工作的示例:

>>> import pandas as pd 
>>> df = pd.DataFrame([[1,2],[1,3]], columns=list("AB"))
>>> df 
   A  B
0  1  2
1  1  3
>>> 
>>> df[~(df.B == 3)]
   A  B
0  1  2
>>> df[df.B != 3]
   A  B
0  1  2
>>> df[df.B != 3]