将行动态添加到 DataFrame

Hex*_*789 3 python dataframe pandas

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

Cle*_*leb 8

作为 的替代方案.loc,您可能需要考虑at. 使用@NickBraunagel 的例子:

df = pd.DataFrame(columns=['foo1','foo2'])
Run Code Online (Sandbox Code Playgroud)

然后

df.at['2716', 'foo1'] = 10
Run Code Online (Sandbox Code Playgroud)

产量

     foo1 foo2
2716   10  NaN
Run Code Online (Sandbox Code Playgroud)

时间完全不同:

# @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
Run Code Online (Sandbox Code Playgroud)

如果要同时添加多个列条目,可以执行以下操作:

d = {'foo1': 20, 'foo2': 10}
df.at['1234', :] = d
Run Code Online (Sandbox Code Playgroud)

屈服

     foo1 foo2
2716   10  NaN
1234   20   10
Run Code Online (Sandbox Code Playgroud)

但是,一定要相同的数据类型随时添加,以避免错误或其它不希望的效果解释这里

  • @NickBraunagel:我想这个假设是有效的,因为 OP 正在谈论单行。谢谢参考! (2认同)

Nic*_*gel 5

import pandas as pd

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

df.loc[2176,'foo1'] = 'my_value'
Run Code Online (Sandbox Code Playgroud)

df 然后是:

        foo1        foo2
2176    my_value    NaN
Run Code Online (Sandbox Code Playgroud)