我有一個數據框df
,其中一列count
包含字符串。這些字符串大部分都可以轉換爲整數(例如0006
),這是我會用它們做的。但是,count
中的一些條目是空白字符串。我該如何如何處理整數值列中的非數字條目
- 刪除所有
count
值爲空字符串的行。 - 用我選擇的某個數值替換該列中的所有空白值。
如果存在特別有效的方法,數據幀非常大。後
我有一個數據框df
,其中一列count
包含字符串。這些字符串大部分都可以轉換爲整數(例如0006
),這是我會用它們做的。但是,count
中的一些條目是空白字符串。我該如何如何處理整數值列中的非數字條目
count
值爲空字符串的行。如果存在特別有效的方法,數據幀非常大。後
使用dropna
fillna
或pd.to_numeric(errosr='coerce')
考慮熊貓系列s
s = pd.Series(np.random.choice(('0001', ''), 1000000), name='intish')
滴法1(較不健壯)
s[s != ''].astype(int)
滴法2(更堅固)
pd.to_numeric(s, 'coerce').dropna().astype(int)
下降定時
更魯棒的方法是更快
填充方法1
pd.to_numeric(s, 'coerce').fillna(0).astype(int)
填充方法2
s.where(s.astype(bool), 0).astype(int)
填充定時
所花的時間相同數量的下降
從技術上講,你也應該在填充情況下投射到'int' :) – IanS
謝謝。一個細節是我的空白字符串不是空的。我需要使用.strip,因爲它們是可變數量的空格。 – eleanora
's.str.strip()'應該這樣做。 – piRSquared
看來你想要兩個不同的東西。但首先,將列to numeric和強制錯誤:
df['count'] = pd.to_numeric(df['count'], errors='coerce')
要刪除行(使用subset
以避免來自其他列下探NaN
):
df.dropna(subset=['count'])
要使用默認值代替:
df['count'] = df['count'].fillna(default_value)
[Python Pandas DataFrame移除空單元格]的可能重複(http://stackoverflow.com/questions/29314033/python-pandas-dataframe-remove-empty-cells) –
所以你想做兩件不相容的事,對吧?一旦你刪除了空白值,那麼沒有一點替代空白值... – IanS
是的,這些是爲了兩種不同的選擇。 – eleanora