在控制台中打印,但在格式化为CSV时不打印

时间:2019-06-18 18:24:48

标签: python excel pandas

因此,我有一个程序将数据分组在一起,然后得到分组的大小。在控制台中,它可以完美打印组名和计数。之后,我唯一要做的就是使用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 :(得分:0)

索引为false的

df.to_csv将忽略行名称,而不写入它们。尝试使用index = True。

答案 1 :(得分:0)

在您的代码中,df实际上是groupby之后的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)