动态添加行到DataFrame

4

假设我有一个空数据帧,已设置了列,但没有行。我正在从网络上爬取一些数据,所以假设我需要将索引'2176'添加到空数据帧中。当我尝试分配它时,如何自动将此行添加到数据库中?这甚至是pandas的目的吗?还是应该使用其他工具?

2个回答

10
作为.loc的替代选择,您可能想考虑at。使用@NickBraunagel的示例:
df = pd.DataFrame(columns=['foo1','foo2'])

然后
df.at['2716', 'foo1'] = 10

产生。
     foo1 foo2
2716   10  NaN

计时方式有很大不同:

# @NickBraunagel's solution
%timeit df.loc['2716', 'foo1'] = 10
1000 loops, best of 3: 212 µs per loop

# the at solution
%timeit df.at['2716', 'foo1'] = 10
100000 loops, best of 3: 12.5 µs per loop

如果您想同时添加多个列条目,可以执行以下操作:
d = {'foo1': 20, 'foo2': 10}
df.at['1234', :] = d

产出

     foo1 foo2
2716   10  NaN
1234   20   10

然而,务必始终添加相同的数据类型以避免错误或其他不希望的影响,如此处所解释的那样。


1
不错的调用,假设您一次只更新一个值/单元格(这适用于此示例)。有关参考信息,请访问:https://dev59.com/1FoU5IYBdhLWcg3wsYTM#37216587 - NickBraunagel
2
@NickBraunagel:我猜这个假设是成立的,因为OP在谈论单行。感谢提供参考! - Cleb

6
import pandas as pd

df = pd.DataFrame(columns=['foo1','foo2'])

df.loc[2176,'foo1'] = 'my_value'

df是指:

        foo1        foo2
2176    my_value    NaN

1
更多细节请参见:https://github.com/pandas-dev/pandas/issues/2801#issuecomment-17644076 - Tomek C.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接