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

Python 在控制台中打印,但在格式化为CSV时不打印,python,excel,pandas,Python,Excel,Pandas,所以我有一个程序,将数据分组,然后得到分组的大小。在控制台中,它完美地打印组名和计数。之后我做的唯一一件事就是使用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) #Lo

所以我有一个程序,将数据分组,然后得到分组的大小。在控制台中,它完美地打印组名和计数。之后我做的唯一一件事就是使用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
45
11
52
23
但是,CSV如下所示:

Operator
A                           45
B                           11
C                           52
D                           23
45
11
52
23
每次运行脚本时也会显示此错误: FutureWarning:Series.to_csv的签名与DataFrame.to_csv的签名对齐,参数“header”将其默认值从False更改为True:请传递显式值以抑制此警告。
df.to_csv('Weekly_Count_Per_OP.csv',index=False)

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

在您的代码中,
df
实际上是groupby之后的
系列,然后是列上的
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
pandas.core.series.Series
    Operator    count
0   A             3
1   B             2
现在,让我们做手术

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

    Operator
0   A
1   A
2   A
3   B
4   B
pandas.core.series.Series
    Operator    count
0   A             3
1   B             2
在创建csv文件之前,您需要一个数据帧。因此,

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

    Operator
0   A
1   A
2   A
3   B
4   B
pandas.core.series.Series
    Operator    count
0   A             3
1   B             2
然后,使用代码将其导出到csv文件

df.to_csv('Weekly_Count_Per_OP.csv', index = False)

也许出于某种原因,在您的代码中考虑将“运算符”作为索引?您是否尝试过不使用
index=False
?遗憾的是,这并不是简单地将一个运行计数放在一边或不放在一边(即0,1,2,3First):这不是一个错误,而是一个警告:)。第二:你试过按照警告的建议去做吗?这就解决了这个警告吗?大卫,我不完全明白这个警告意味着什么。我不会撒谎,我使用的所有其他东西都在旁边添加了计数,所以我甚至没有想过尝试,谢谢,我无法得到复制的警告,但我有一种感觉,这是由于没有原始数据帧,您正在分组,我不想复制它。检查数据帧是否真的是数据帧或groupby后面的序列,可能就是它。嗯,它是一个序列
.size()
提供了一个系列。不需要复制。我相信这只是一个系列,然后可以解释警告。当我真的很快做了一个测试来确认csv文件中的索引问题时,我显式地将我的作为一个数据帧,我没有费心完全复制提问者代码。据我所知,问题更多的是关于索引未写入csv文件的问题。只需将to_csv行中的index=False更改为index=True,即可解决该问题,它仍将显示警告:(.
to_csv
应用于数据帧,而不是一个系列。正确,但是,当我这样做时,它的输出完全不同。我道歉。就像他们说的,有时我会很有帮助地走开,我没有代表提出任何问题,但我肯定会