- См. этот пост .
Вы можете использовать df.loc [_not_yet_existing_index_label_] = new_row
Использование df.at вызовет KeyError
, когда метка не существует в DataFrame.
ИЛИ, так как добавление новых строк требует большого объема памяти, я настоятельно рекомендую
это решение , которое решает вашу проблему, хотя и не так, как вы просили.(Создайте словарь и создайте экземпляр DataFrame
B
, как только вы закончите итерацию по
A
.)
Как уже упоминалось @philipzhou, вы можете использовать collections.counter
который автоматически изменит что-то вроде этого:
print(collections.Counter(['a', 'b', 'c', 'a', 'b', 'b']))
Output:
Counter({'b': 3, 'a': 2, 'c': 1})
, где вы можете представить, что каждая буква здесь представляет собой индекс строки, добавляемый в коллекцию и подсчитывающий по мере прохождения A
.Затем следуйте этим инструкциям , чтобы превратить это в df_B
.В основном:
df_B = pd.DataFrame.from_dict(a_counter, orient='index').reset_index()
, где a_counter
- ваш collection.counter
объект.