如何命名熊猫在CSV输出中的列?

时间:2020-01-18 07:45:02

标签: python pandas csv

我在编写包含两列的csv文件时遇到了一些麻烦。第一列包含间隔或垃圾箱,而第二列包含这些垃圾箱中的事物计数。我从另一个包含原始数据点的csv文件中制作了这个csv文件。我可以写文件,但无法命名列。我希望输出文件应该是包含两列的csv,因此我为.to_csv函数提供了两个名称的列表,并且出现了此错误

import pygame

Red = 255, 0, 0
Black= 0,0,0
rectXpos = 2
rectypos = 2
speed = 2
screenedgex = 500

pygame.init()

window = pygame.display.set_mode(size=(500, 500))

clock = pygame.time.Clock()
running = True
k=1                                #here is k used to indicate direction
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

        pygame.display.update()

        window.fill(Black)
        square = pygame.draw.rect(window, Red, [rectXpos, rectypos, 50, 50],2)
        rectXpos +=  2*k                #here is addition of 2 in given direction

        if (rectXpos > 500) or (rectXpos < 0): #here is condition to change direction
            k=-k



        clock.tick(60)
        print(rectXpos)

它来自的代码块就是这个

    Traceback (most recent call last):
  File "C:/Users/willi/Documents/Python/csv_processing_scratch/simple_csv_processor.py", line 65, in <module>
    create_binned_csv_counts(dir_stringx, data_bin_edges, "value_counts_x_frameintervalsize_" + str(frame_interval_size))
  File "C:/Users/willi/Documents/Python/csv_processing_scratch/simple_csv_processor.py", line 36, in create_binned_csv_counts
    pd.cut(data_array, bin_edges).value_counts().to_csv(vcfilestring,index_label=True, header=["Coordinate Bins", "Counts for time interval " + str(i)])
  File "C:\Users\willi\AppData\Roaming\Python\Python38\site-packages\pandas\core\series.py", line 4685, in to_csv
    return self.to_frame().to_csv(**kwargs)
  File "C:\Users\willi\AppData\Roaming\Python\Python38\site-packages\pandas\core\generic.py", line 3228, in to_csv
    formatter.save()
  File "C:\Users\willi\AppData\Roaming\Python\Python38\site-packages\pandas\io\formats\csvs.py", line 202, in save
    self._save()
  File "C:\Users\willi\AppData\Roaming\Python\Python38\site-packages\pandas\io\formats\csvs.py", line 310, in _save
    self._save_header()
  File "C:\Users\willi\AppData\Roaming\Python\Python38\site-packages\pandas\io\formats\csvs.py", line 239, in _save_header
    raise ValueError(
ValueError: Writing 1 cols but got 2 aliases

我当时认为它与cut和value_counts返回的数据类型有关,但是在文档中搜索那些pandas方法并不是很有启发性的。

如果可以提供更多信息,请告诉我,感谢您能获得的所有帮助。

同样重要的是,当我不命名列时,输出csv的前几行,我也不确定为什么会有零。

def create_binned_csv_counts(maindirectorystring, bin_edges, valuecountstring):
    i = 0
    for filename in os.listdir(maindirectorystring):
        vcfilestring = str(filename[0:18]) + "_value_counts.csv"
        os.chdir(maindirectorystring)
        os.chmod(filename, 0o7777)
        df = pd.read_csv(filename)
        data_array = df["Coordinates for bin " + str(i)].to_numpy()
        os.chdir(cwd)
        os.chdir(valuecountstring)
        pd.cut(data_array, bin_edges).value_counts().to_csv(vcfilestring,index_label=True, header=["Coordinate Bins", "Counts for time interval " + str(i)])
        os.chdir(cwd)
        i += 1

我希望它看起来像这样

0
"(-10, -9]",0
"(-9, -8]",0
"(-8, -7]",0
"(-7, -6]",0
"(-6, -5]",0
"(-5, -4]",0
"(-4, -3]",0
"(-3, -2]",21
"(-2, -1]",13
"(-1, 0]",33
"(0, 1]",74
"(1, 2]",285

1 个答案:

答案 0 :(得分:0)

好的,YOLO帮助我开始朝正确的方向思考,我将to_csv文件的行更改为此

pd.cut(data_array,bin_edges).value_counts().to_csv(vcfilestring,index_label="Coordinate Bins",index=True, header=["Counts for time interval " + str(i)])