[英]Replace value in any column in pandas dataframe
在下面的數據框中:
T2MN T2MX RH2M DFP2M RAIN
6.96 9.32 84.27 5.57 -
6.31 10.46 - 5.63 -
- 10.66 79.38 3.63 -
0.79 4.45 94.24 1.85 -
1.45 3.99 91.71 1.17 -
如何用NaN替換所有-
。 我不想指定列名,因為我事先不知道哪個列會有-
只需replace()
字符串:
In [10]: df.replace('-', 'NaN')
Out[10]:
T2MN T2MX RH2M DFP2M RAIN
0 6.96 9.32 84.27 5.57 NaN
1 6.31 10.46 NaN 5.63 NaN
2 NaN 10.66 79.38 3.63 NaN
3 0.79 4.45 94.24 1.85 NaN
4 1.45 3.99 91.71 1.17 NaN
如果這些是字符串,那么你的花車可能也是字符串。
假設您的數據幀是df
,我會嘗試
pd.to_numeric(df.stack(), 'coerce').unstack()
更深入的解釋
熊貓通常不會用'-'
代表丟失的花車。 因此, '-'
必須是一個字符串。 因此,任何帶有'-'
列的dtype
必須是'object'
。 這使得很有可能無論解析數據,將浮點數保留為字符串。
設定
from io import StringIO
import pandas as pd
txt = """T2MN T2MX RH2M DFP2M RAIN
6.96 9.32 84.27 5.57 -
6.31 10.46 - 5.63 -
- 10.66 79.38 3.63 -
0.79 4.45 94.24 1.85 -
1.45 3.99 91.71 1.17 - """
df = pd.read_csv(StringIO(txt), delim_whitespace=True)
print(df)
T2MN T2MX RH2M DFP2M RAIN
0 6.96 9.32 84.27 5.57 -
1 6.31 10.46 - 5.63 -
2 - 10.66 79.38 3.63 -
3 0.79 4.45 94.24 1.85 -
4 1.45 3.99 91.71 1.17 -
什么是dtypes
?
print(df.dtypes)
T2MN object
T2MX float64
RH2M object
DFP2M float64
RAIN object
dtype: object
第一個元素的類型是什么?
print(type(df.iloc[0, 0]))
<class 'str'>
這意味着任何帶有'-'
的列就像一列看起來像浮點數的字符串。 你想用pd.to_numeric
與參數errors='coerce'
給力非數字項目np.nan
。 然而, pd.to_numeric
不上一個操作pd.DataFrame
所以我們stack
和unstack
。
pd.to_numeric(df.stack(), 'coerce').unstack()
T2MN T2MX RH2M DFP2M RAIN
0 6.96 9.32 84.27 5.57 NaN
1 6.31 10.46 NaN 5.63 NaN
2 NaN 10.66 79.38 3.63 NaN
3 0.79 4.45 94.24 1.85 NaN
4 1.45 3.99 91.71 1.17 NaN
我想你想的實際numpy.nan
而不是字符串NaN
,你可以用很多方法,如fillna
/ isnull
/ notnull
在pandas.Series
/ pandas.DataFrame
import pandas as pd
import numpy as np
df = pd.DataFrame([['-']*10]*10)
df = df.replace('-',np.nan)
看起來你正在從CSV / FWF文件中讀取這些數據...如果這是真的,擺脫'-'
的最簡單方法就是解釋Pandas它是NaN
的代表:
df = pd.read_csv(filename, na_values=['NaN', 'nan', '-'])
測試:
In [79]: df
Out[79]:
T2MN T2MX RH2M DFP2M RAIN
0 6.96 9.32 84.27 5.57 NaN
1 6.31 10.46 NaN 5.63 NaN
2 NaN 10.66 79.38 3.63 NaN
3 0.79 4.45 94.24 1.85 NaN
4 1.45 3.99 91.71 1.17 NaN
In [80]: df.dtypes
Out[80]:
T2MN float64
T2MX float64
RH2M float64
DFP2M float64
RAIN float64
dtype: object
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.