How to add an extra row to a pandas dataframe
如果我有一个空的数据帧,那么:
1 2
| columns = ['Date', 'Name', 'Action','ID']
df = pd.DataFrame(columns=columns) |
是否有方法将新行附加到此新创建的数据帧?目前,我必须创建一个字典,填充它,然后在末尾将字典附加到数据框中。有更直接的方法吗?
试试这个:
1
| df.loc[len(df)]=['8/19/2014','Jun','Fly','98765'] |
警告:此方法如果有作品在"洞"中的指数。例如,你有一个与suppose下列三行,以指数为0,1,和3(例如,因为你删除的行数(2)。然后,Len(DF)= 3,在操作系统的命令行不添加新的行数是覆盖3。
- df.loc[df.shape[0]](甚至df.loc[len(df.index)]也比df.loc[len(df)]快得多。
- 一个元素>>>timeit.timeit(lambda:len(flows))2.4147243930055993>>timeit.timeit(lambda:flows.shape[0])3.478663280991715 4K元素:>>>timeit.timeit(lambda:len(flows))2.520429938987945>>timeit.timeit(lambda:flows.shape[0])3.619514650013136
- 如果你用的是len(df),为什么用loc而不是iloc?它是否有匹配索引成员而不是行号的危险?
- 天哪,这花了很长时间才弄明白!非常感谢!
- 这是一种将行附加到数据帧的速度非常慢的方法。作为一个实际的例子,我使用这个方法通过解析一个文件创建了一个数据帧,它有150万行,花费了7个多小时。同样的事情,当用一个字典,然后放入一个数据帧,大约需要10秒钟。这在内部发生是因为一个序列的附加速度很慢。请参阅stackoverflow.com/a/37992805/1224075了解内部发生的情况。
- 我发现最直观的,即使很慢…
- 如果它工作的很慢,它仍然可以工作。
即将推出的版本将允许以熊猫为)行通loc在线非现有的索引数据。
这里描述的是一个被称为新的特征,这与扩大的背景。
- 放大只允许通过loc(iloc不能在末尾加,所以有点含糊)
- 打字错误,更正了,谢谢。
- 我在一个空的数据帧上玩这个游戏,发现它不起作用。似乎只有当框架至少有一行时才有效。
- 对于熊猫API的完整性来说并不酷…
- @Danallan为什么不在Github上发布一个问题,举几个例子
- 完成。
- 这在master中是固定的。请看这里。@对于新功能,boud总是欢迎bug报告和/或pr,这些新功能在退出时并不总是完整的。
- 我发现这将从添加的序列中删除数据帧中还没有的任何列。在这种情况下,文档具有误导性,因为它声明"带放大的设置"类似于"附加"操作,即使"附加"将向数据帧添加任何新列。
- 这难道不是比创建一个字典然后将整个字典添加到df慢得多吗?
- 这不是它应该如何工作的吗?那为什么不呢?
不同的方法,我发现,相对于经典的丑陋+追加,但这样的作品:
1 2 3 4 5 6 7 8 9 10
| df = df.T
df[0] = ['1/1/2013', 'Smith','test',123]
df = df.T
df
Out[6]:
Date Name Action ID
0 1/1/2013 Smith test 123 |