我正在使用Panda Dataframe为我的代码存储一些信息。在我的代码中,
csv:的初始状态
...............
ID,Name
...............
将数据添加到数据帧:
name_desc = {"ID": 23523223, "Name": BlahBlah}
df = df.append(name_desc, ignore_index=True)
这是我创建数据库时的熊猫数据帧:
....................
,ID,Name
0,23523223,BlahBlah
....................
下面是我的代码,它搜索ID列以定位具有指定ID(name_desc["ID"](的行。
df.loc[df["ID"] == name_desc["ID"], "Name"] = name_desc["Name"]
我遇到的问题是,在我编辑了名称后,我得到了一个结果数据库,看起来像:
................................
Unnamed: 0 ID Name
0 0 23523223 BlahBlah
................................
如果我连续执行:
df.loc[df["ID"] == name_desc["ID"], "Name"] = name_desc["Name"]
我得到这个数据库:
..................................
,Unnamed: 0,Unnamed: 0.1,ID,Name
0,0,0,235283335,Dinese
..................................
我不明白为什么在编辑时会在数据库前面添加额外的列。
我认为您遇到了一个与df创建有关的问题。您在这里提供的示例不会返回您所显示的内容:
BlahBlah = 'foo'
name_desc = {"ID": 23523223, "Name": BlahBlah}
df = pd.DataFrame(data=name_desc, index=[0])
print(df.columns) # it returns an Index(['ID', 'Name'], dtype='object')
print(len(df.columns)) # it returns 2, the number of your df columns
如果可以的话,试着找出在代码中添加额外列的指令。否则,您可以使用drop删除该列,并删除名称为"的列就地用于实际修改数据帧。如果没有添加inplace,您只需创建数据帧的视图,而不需要实际修改它:
df.drop(columns = [''], inplace = True)
最后,我在下面发布完整的示例。我的假设是,你的df是以某种方式创建的,在开头有一个空列,所以我也把它添加到字典中:
BlahBlah = 'foo'
name_desc = {'':'',"ID": 23523223, "Name": BlahBlah} # I added an empty column
df = pd.DataFrame(data=name_desc, index = [0])
print(df.columns) # Index(['', 'ID', 'Name'], dtype='object')
df.drop(columns = [''],inplace = True)
df.loc[df["ID"] == name_desc["ID"], "Name"] = name_desc["Name"]
print(df.columns) # Index(['ID', 'Name'], dtype='object')