У меня огромный CSV файл размером 100 КБ, который содержит записи. Пример, как показано ниже
city employee
california jhon
delhi kumar
us raj
california brakers
us kroja
...
Поэтому я хочу сгруппировать их и сохранить в отдельном файле CSV
Мой результат для вышеприведенного примера будет
city employee
california jhon
california brakers
delhi kumar
us raj
us kroja
Нужно ли мне сортировать/группировать по городу в кадре данных, а затем иметь цикл for и перебирать весь кадр данных?
И это мой код
New_data=pd.read_csv("citynames.csv",encoding = "ISO-8859-1")
Aftergrouping_data=New_data.groupby("city")
#print(Aftergrouping_data.groups)
for name,group in Aftergrouping_data:
print(name)
group.to_csv("aftergrouping.csv".format(name), index=False)
Проблема состоит в том, что он переопределяет значения в цикле for и отображает последние данные группы. но я хочу, чтобы все сгруппированные данные были в файле.
Заранее спасибо
Из вашего описания два аспекта кажутся ясными:
groupby
. Вы можете просто использовать sort_values
за которым следует to_csv
:
# read file
df = pd.read_csv('citynames.csv', encoding='ISO-8859-1')
# sort by 'city', ascending
df = df.sort_values('city')
# export to csv
df.to_csv('citynames_out.csv', index=False)
Aftergrouping_data=New_data.groupby("city")
тогда я выполняюnumpy
посколькуAftergrouping_data.agg(np.size)
знает, что вопрос заключается в том, как сохранить результат в CSV-файлеgroupby
для задачи, описанной в этом вопросе, или почему вам нужно агрегировать по размеру. Я предлагаю вам задать отдельный вопрос для различных требований, четко показывая желаемый результат.