我想删除任何列中的所有行(或删除所有不带问号符号的行)。我还想将元素更改为float类型。
输入:
X Y Z 0 1 ? 1 2 3 ? ? 4 4 4 4 ? 2 5
输出:
X Y Z 1 2 3 4 4 4
最好使用pandas dataframe操作。
mhd8tkvw1#
你可以尝试先在列中查找字符串?,创建布尔掩码,最后过滤行-使用布尔索引。如果需要将列转换为float,请使用astype:
?
float
astype
print ~((df['X'] == '?' ) (df['Y'] == '?' ) | (df['Z'] == '?' )) 0 False 1 True 2 False 3 True 4 False dtype: bool df1 = df[~((df['X'] == '?' ) | (df['Y'] == '?' ) | (df['Z'] == '?' ))].astype(float) print df1 X Y Z 1 1 2 3 3 4 4 4 print df1.dtypes X float64 Y float64 Z float64 dtype: object
或者你可以尝试:
df['X'] = pd.to_numeric(df['X'], errors='coerce') df['Y'] = pd.to_numeric(df['Y'], errors='coerce') df['Z'] = pd.to_numeric(df['Z'], errors='coerce') print df X Y Z 0 0 1 NaN 1 1 2 3 2 NaN NaN 4 3 4 4 4 4 NaN 2 5 print ((df['X'].notnull() ) & (df['Y'].notnull() ) & (df['Z'].notnull() )) 0 False 1 True 2 False 3 True 4 False dtype: bool print df[ ((df['X'].notnull() ) & (df['Y'].notnull() ) & (df['Z'].notnull() )) ].astype(float) X Y Z 1 1 2 3 3 4 4 4
更好的是用途:
df = df[(df != '?').all(axis=1)]
或者:
df = df[~(df == '?').any(axis=1)]
6kkfgxo02#
您可以尝试将?替换为空值
import numpy as np data = df.replace("?", np.NaN)
如果要替换特定列,请尝试以下操作:
data = df["column name"].replace("?", np.NaN)
mwg9r5ms3#
删除pandas Dataframe 中任何列中带有“问号”值的行
import numpy as np import pandas as pd df = pd.DataFrame(columns=["col1", "col2"]) df.loc[0] = [ "foo", "bar" ] df.loc[1] = [ "f?oo", "bar" ] df.loc[2] = [ "foo", "?ba?"] df.loc[3] = [ "foo", "?"] df.loc[4] = [ np.nan, "bar"] print(df) df = df.replace("?", np.nan) df = df.dropna() print(df)
图纸:
col1 col2 0 foo bar 1 f?oo bar 2 foo ?ba? 3 foo ? 4 NaN bar col1 col2 0 foo bar 1 f?oo bar 2 foo ?ba?
3条答案
按热度按时间mhd8tkvw1#
你可以尝试先在列中查找字符串
?
,创建布尔掩码,最后过滤行-使用布尔索引。如果需要将列转换为float
,请使用astype
:或者你可以尝试:
更好的是用途:
或者:
6kkfgxo02#
您可以尝试将
?
替换为空值如果要替换特定列,请尝试以下操作:
mwg9r5ms3#
删除pandas Dataframe 中任何列中带有“问号”值的行
图纸: