2017-09-07 174 views
0

我有X個數據框(df1,df2,df3,...,dfX),並且對於它們中的每一個,我都想運行這個代碼來轉換這些值在每一列內浮動,並將其重新存儲到有問題的數據幀中:將字符串轉換爲數據框列表的浮點數

def handle_non_numerical_data(df): 
     columns = df.columns.values 

     for column in columns: 
      text_digit_vals = {} 
      def convert_to_int(val): 
       return text_digit_vals[val] 

      if df[column].dtype != np.int64 and df[column].dtype != np.float64: 
       column_contents = df[column].values.tolist() 
       unique_elements = set(column_contents) 
       x = 0 * 1.0 
       for unique in unique_elements: 
        if unique not in text_digit_vals: 
         text_digit_vals[unique] = x 
         x+=1 

       df[column] = list(map(convert_to_int, df[column])) 

     return df 

df = handle_non_numerical_data(df) 
+0

請參閱[如何使重複性好大熊貓的例子(http://stackoverflow.com/questions/20109391/how-to-make-good-reproducible-pandas-examples),並相應地修改你的信息。 – MaxU

回答

0

這實在是效率低下。只需在每個數據幀上使用pd.to_numeric即可。

df_list = [df1, df2, df3, ...] 

for df in df_list: 
    df = pd.to_numeric(df, errors='coerce').fillna(0.0) 
相關問題