Python 命名使用dataframe添加的列

Python 命名使用dataframe添加的列,python,pandas,dataframe,Python,Pandas,Dataframe,我有以下csv文件,我按如下方式处理 import pandas as pd df = pd.read_csv('file.csv', sep=',',header=None) id ocr raw_value 00037625-4706-4dfe-a7b3-de8c47e3a28d A 3 000a7b30-4c4f-4756-a757-f688ccc55d5d A /c

我有以下csv文件,我按如下方式处理

import pandas as pd
df = pd.read_csv('file.csv',   sep=',',header=None)

id                                       ocr    raw_value
00037625-4706-4dfe-a7b3-de8c47e3a28d    A       3
000a7b30-4c4f-4756-a757-f688ccc55d5d    A       /c
000b08e3-4129-4fd2-8ec0-23d00fe38a45    A      yes
00196436-12bc-4024-b623-25bac586d314    A      know
001b8c43-3e73-43c1-ba4f-df5edb10dfac    A      hi
002882ca-48bb-4161-a75a-cf0ec984d650    A      fd
003b2890-3727-4c79-955a-f74ec6945ed7    A     Sensible
004d9025-86f0-4f8c-9720-01e3385c5e77    A      2015
现在我想添加一个新列:

df['val']=None
for img in images:
     id, ext = img.rsplit('.',1)
     idx = df[df[0] ==id].index.values
     df.loc[df.index[idx], 'val'] =  id
当我在新文件中写入df时,如下所示:

df.to_csv('new_file.csv', sep=',',encoding='utf-8') 
我注意到这一栏是正确添加和填充的。但是该列仍然没有名称,应该命名为
val

id                                       ocr    raw_value
00037625-4706-4dfe-a7b3-de8c47e3a28d    A       3            4
000a7b30-4c4f-4756-a757-f688ccc55d5d    A       /c           3
000b08e3-4129-4fd2-8ec0-23d00fe38a45    A      yes           1 
00196436-12bc-4024-b623-25bac586d314    A      know          8 
001b8c43-3e73-43c1-ba4f-df5edb10dfac    A      hi            9
002882ca-48bb-4161-a75a-cf0ec984d650    A      fd            10
003b2890-3727-4c79-955a-f74ec6945ed7    A     Sensible       14
如何设置为添加的最后一列

编辑1:

print(df.head())

                                     0     1       2           3
0                                   id    ocr  raw_value  manual_raw_value   
1  00037625-4706-4dfe-a7b3-de8c47e3a28d  ABBYY         03                03   
2  000a7b30-4c4f-4756-a757-f688ccc55d5d  ABBYY        y/c               y/c   
3  000b08e3-4129-4fd2-8ec0-23d00fe38a45  ABBYY    armoire           armoire   
4  00196436-12bc-4024-b623-25bac586d314  ABBYY      point             point   

       val  
0      None  
1        93  
2       yic  
3   armoire  
4     point  
应允许您将下一部分简化为

df['val']=None
for img in images:
     image_id, ext = img.rsplit('.',1)
     df.loc[image_id, 'val'] =  image_id
如果以后不需要使用
图像\u id
作为索引,请使用
df.reset\u索引(inplace=True)
一种简单的方法。。。 在发送到csv之前:

df.columns.value[3]="val"
仅需要,因为默认情况下,“是可以忽略的,如果
csv
没有标题,则使用
header=None

df = pd.read_csv('file.csv')

问题是您的第一行并没有被解析为列名,而是被解析为第一个数据行。

这很有趣,应该可以工作。在
到_csv
之前,什么是
打印(df.columns.tolist())
?我无法复制这个。但另一方面,在代码中使用
id
作为变量是不好的做法。您正在重载烘焙函数
id()
@jezrael,它返回Pandas的[0,1,2,3,'val']头,如果
print(df.head())
before
to_csv
也没有
?您使用
df[0]
使我怀疑
数据框的第一行
不是索引,而且
to_csv
不包括列标签。将
header=0
添加到调用
read_csv
以更正此问题粘贴的OP的
DataFrame
第一行不是列标签,而是其实际
DataFrame
的第一行,因此更改列标签对我将其保存为df.to_csv(“新文件”)没有多大帮助它在开头添加了一个新的列索引,表示如何删除该列?对于删除第一个索引列,需要
df.to\u csv('new\u file',index=False)
df = pd.read_csv('file.csv')