Есть проблемы с Панды в Python 3.5Невозможно выполнить Python панда set_value
Я читаю местную CSV с помощью панд, CSV-содержит чистые данные, без заголовка участвует. Тогда я присвоил имя столбца, используя
df= pd.read_csv(filePath, header=None)
df.columns=['XXX', 'XXX'] #for short, totally 11 cols
CSV-имеет 11 столбцов, один из них является строка, другие являются целыми числами.
Затем я попытался заменить строку столбца на целое значение в цикле, по ячейкам
for i, row in df.iterrows():
print(i, row['Name'])
df.set_value(i, 'Name', 123)
intrger 123 является примером, а не каждая клетка при этом столбце 123. Функция печати работает хорошо, если I удалить set_value, но с
df.set_value(i, 'Name', 123)
Тогда ошибка информация:
Traceback (most recent call last): File "D:/xxx/test.py", line 20, in df.set_value(i, 'Name', 233)
File "E:\Users\XXX\Anaconda3\lib\site-packages\pandas\core\frame.py", line 1862, in set_value series = self._get_item_cache(col)
File "E:\Users\XXX\Anaconda3\lib\site-packages\pandas\core\generic.py", line 1351, in _get_item_cache res = self._box_item_values(item, values)
File "E:\Users\XXX\Anaconda3\lib\site-packages\pandas\core\frame.py", line 2334, in _box_item_values
return self._constructor(values.T, columns=items, index=self.index)
AttributeError: 'BlockManager' object has no attribute 'T'
Но если я создаю dataframe вручную в коде
df = pd.DataFrame(index=[0, 1, 2], columns=['x', 'y'])
df['x'] = 2
df['y'] = 'BBB'
print(df)
for i, row in df.iterrows():
df.set_value(i, 'y', 233)
print('\n')
print(df)
Это сработало. Мне интересно, может быть, что-то мне не хватает?
Спасибо!
Почему бы вам не просто сделать следующее вместо вашего цикла: 'df ['Name'] = 123'? – MaxU
Потому что не каждая ячейка должна быть 123 – Windtalker
Но в вашем коде вы устанавливаете 123 на весь столбец «Имя» - не могли бы вы уточнить, чего вы собираетесь достичь? – MaxU