Я сохранил фрейм данных Pandas в CSV-файл, и в процессе информация о типе данных была потеряна и установлена, а списки были преобразованы в строки.
Вот мой CSV-файл.
|id|words|tags
0|A|{'-', 'Drawings', 'Jude'}|[]
1|B|{'mafalda'}|[]
2|C|set()|[]
3|D|{'Sidestepping', 'flood'}|['mountain']
4|E|{'visvim','jack'}|[]
5|F|set()|[]
6|-G|<class 'object'>|<class 'object'>
Я могу прочитать этот CSV-файл , если удаляю номера индексов 2,5 и 6 , которые содержат пустые наборы, представленные как set (), и нулевые объекты. Для этого я использую следующий код:
from ast import literal_eval
df = pd.read_csv('testdata.csv', sep='|' )
df['words'] = df['words'].apply(literal_eval)
df['tags'] = df['tags'].apply(literal_eval)
Однако, когда есть пустые наборы, я получаю исключение, в котором упоминается
ValueError: malformed node or string: <_ast.Call object at 0x7f44250fc250>
Как правильно прочитать пустые наборы?
ОБНОВЛЕНИЕ: Jezrael предоставил ответ для обработки пустых наборов. Как я могу также обрабатывать нулевые объекты.
Также, почему Pandas сохраняет пустой набор как 'set ()', когда он сохраняет нулевой список как [], а не 'list []'
Обновление: пример кода, который создал CSV с нулевыми объектами.
col_names = ['A', 'B']
df = pd.DataFrame(columns = col_names)
df.loc[len(df)] = [2, 4]
df
df['C']=object
print(df)
print(type(df))
df.to_csv('Sample_File', sep='|', encoding='utf-8')