Привет, у меня есть фрейм данных (df), который содержит два столбца (дата, текст), которые считываются из электронной таблицы Excel в Python/Pandas.Python Convert Pandas Float to String
xl = pd.ExcelFile(dir+"file.xlsx")
df = xl.parse(xl.sheet_names[0])
date text
0 2013-08-06 NaN
1 2013-08-06 Text with unicode
2 ...
Текст содержит нежелательные символы Юникода, которые я обычно вырезать с помощью
df['text'] = df['text'].apply(lambda sentence: ''.join(word for word in sentence if ord(word) < 128))
Однако, поскольку текст в первой строке содержит «NaN», представляется, что столбец набираясь как " float "от Pandas и вышеприведенная команда не работает, поскольку она работает только с строками. Я не могу найти способ, чтобы переназначить тип как строку, так как содержит символы Юникода:
df['text'] = df['text'].astype(str)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-12: ordinal not in range(128)
Он чувствует, как я получаю в «курица или яйцо» дилеммой.
Вы можете включать вы используете для чтения таблицы? – chrisaycock
Можете ли вы не просто называть 'dropna', либо хотите заменить« NaN »на какое-то значение? – EdChum
@chrisaycock: Я добавил строку для чтения таблицы. – slaw