Python 命名使用dataframe添加的列
我有以下csv文件,我按如下方式处理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
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())
beforeto_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')