Печать в консоли, но не при форматировании в CSV - PullRequest
1 голос
/ 18 июня 2019

Итак, у меня есть программа, которая группирует данные, а затем получает размер групп.В консоли он печатает имена групп и считает отлично.Единственное, что я делаю после этого - использую to_csv, чтобы поместить его в csv.Однако в csv он показывает только количество групп, а не имена групп

for f in xFiles:
    #Grabs just Reported Users
    info = pd.read_excel(f, sheet_name="Reported Users")

    df = df.append(info,ignore_index=True)
    #Looking to sort based on color
df = df.groupby('Operator', as_index=False)['Operator'].size()
print(df)

#Writes to new file
df.to_csv('Weekly_Count_Per_OP.csv', index = False)

Консоль выводит следующее:

Operator
A                           45
B                           11
C                           52
D                           23

Однако CSV выглядит следующим образом:

45
11
52
23

Эта ошибка отображается также при каждом запуске скрипта: FutureWarning: подпись Series.to_csv была выровнена с сигнатурой DataFrame.to_csv, а аргумент 'header' изменит значение по умолчанию с False на True: пожалуйстапередать явное значение, чтобы подавить это предупреждение.df.to_csv ('Weekly_Count_Per_OP.csv', index = False)

Ответы [ 2 ]

0 голосов
/ 18 июня 2019

В вашем коде df на самом деле series после группировки, а затем sum над столбцом.Вам нужен фрейм данных, чтобы его можно было хранить как csv.

Используйте ниже.

df.groupby('Operator', as_index=False)['Operator'].size().to_frame('count').reset_index()

Для более подробного объяснения рассмотрите следующий пример.

df = pd.DataFrame({
    'Operator':['A', 'A', 'A', 'B', 'B'],
})
print(df)

Вывод:

    Operator
0   A
1   A
2   A
3   B
4   B

Теперь давайте сделаемоперация.

s = df.groupby('Operator', as_index=False)['Operator'].size()
print(type(s))

Вывод:

pandas.core.series.Series

Вам понадобится информационный кадр, прежде чем вы сможете создать CSV-файл.Следовательно,

df = df.groupby('Operator', as_index=False)['Operator'].size().to_frame('count').reset_index()

Вывод:

    Operator    count
0   A             3
1   B             2

Затем используйте свой код для экспорта в файл csv.

df.to_csv('Weekly_Count_Per_OP.csv', index = False)
0 голосов
/ 18 июня 2019

df.to_csv с index = false будет игнорировать имена строк и не будет их записывать.Попробуйте использовать index = True.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...