每次运行我创建的程序时,我都想在DataFrame panda中添加新行。我事先不知道数据,函数应该把数据放在一个变量中,我想把这些变量添加到一行中。目前我只是成功地添加了一行,但当我每次运行程序时,这一行都会被下一行替换。我不希望该行被替换,而是添加到下一行。
net_index = mylist.index('NET PAYE EN EUROS ')
net= mylist[net_index+2]
total_index= mylist.index('CONGES ')
total = (mylist[total_index-1])
df = pd.DataFrame(columns=['Mois','Nom','Adresse','Net_payé','Total_versé'])
new = {'Mois': mois, 'Nom': nom, 'Adresse': adresse,'Net_payé':net, 'Total_versé':total}
df= df.append(new, ignore_index=True)
这是我代码的一部分。首先,我创建了一个名为列的空Dataframe,然后创建了一条包含变量的dict,这些变量应该在每次运行时都会更改。
这是我得到的结果,但每次运行时,行都会被下一行替换,而不是添加
我想我必须做一个循环,但它从来都不好用,我到处寻找解决方案,但没有找到。
你知道我能做什么吗?非常感谢
显然,您没有在任何地方保存数据帧。一旦程序退出,所有数据和变量都将被擦除(丢失(。无法从以前的运行中检索数据。解决方案是在退出程序之前将数据帧保存到一个文件中。然后,对于每次运行,从文件中加载以前的数据。
实际上是的,我将数据帧保存在csv文件中。因为我的目标是在csv中实现变量的结果。但结果和我之前展示的一样,总是取第一行并替换它,而不是添加新的。
df = pd.DataFrame(columns=['Mois','Nom', 'Adresse','Net_payé','Total_versé'])
new = {'Mois': mois, 'Nom': nom, 'Adresse': adresse,'Net_payé':net, 'Total_versé':total}
df =df.append(new, ignore_index=True)
df.to_csv('test.csv', header=True, index=False, encoding='utf-8')
谢谢你的回复!
有多种方法可以将行添加到现有的DataFrame中。一种方法是使用pd.concat,其中问题最后一行代码中的df.append函数是一个特定的用例。
然而,我更喜欢的方法是创建一个包含我的数据的嵌套列表,然后从头开始创建一个新的DataFrame。首先,确保要放置在列中的所有变量都是相同长度的列表。类似这样的东西(在这个例子中,列表的长度为2(:
mois_data = [1,2]
nom_data = [3,4]
adresse_data = [5,6]
net_paye_data = [7,8]
total_verse_data = [9,10]
将这些数据放入字典中。请确保设置的列名您的DataFrame作为关键字(注意:这可能会导致您在某些变量名称中使用的重音aigu!可以肯定的是,我省略了这些。您可以稍后使用rename函数重命名它们(包括重音aigu(。
data_dict = dict(Mois=mois_data, Nom=nom_data, Adresse=adresse_data, Net_paye=net_paye_data, Total_verse=total_verse_data)
然后创建数据帧,使用字典作为数据输入:
df = pd.DataFrame(data=data_dict, columns=['Mois','Nom','Adresse','Net_paye','Total_verse'])
结果是:
Mois Nom Adresse Net_paye Total_verse
0 1 3 5 7 9
1 2 4 6 8 10