Panda Dataframe在编辑某些值时向.csv添加更多列



我正在使用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')

相关内容

  • 没有找到相关文章

最新更新