我有一个包含3000多列的数据框。数据框中的许多单元格都是空字符串('')。此外,我有很多数字值是字符串,但实际上应该是整数。我写了两个函数用0填充所有空单元格,并在可能的情况下将值更改为整数,但是当我运行它们时,我的数据帧没有任何变化。功能:
def recode_empty_cells(dataframe, list_of_columns):
for column in list_of_columns:
dataframe[column].replace(r'\s+', np.nan, regex=True)
dataframe[column].fillna(0)
return dataframe
def change_string_to_int(dataframe, list_of_columns):
dataframe = recode_empty_cells(dataframe, list_of_columns)
for column in list_of_columns:
try:
dataframe[column] = dataframe[column].astype(int)
except ValueError:
pass
return dataframe
注意:我正在使用try / except语句,因为某些列包含某种形式的文本。在此先感谢您的帮助。
编辑:
感谢您的帮助,我得到了第一部分工作。现在所有空单元都有0。这是我目前的代码:
def recode_empty_cells(dataframe, list_of_columns):
for column in list_of_columns:
dataframe[column] = dataframe[column].replace(r'\s+', 0, regex=True)
return dataframe
def change_string_to_int(dataframe, list_of_columns):
dataframe = recode_empty_cells(dataframe, list_of_columns)
for column in list_of_columns:
try:
dataframe[column] = dataframe[column].astype(int)
except ValueError:
pass
return dataframe
但是,这会给我以下错误:OverflowError: Python int too large to convert to C long
答案 0 :(得分:9)
您没有在功能中保存更改:
foo.split("").filter(c => specialchars.indexOf(c.charCodeAt()) != -1).length != 0
答案 1 :(得分:4)