python - Pandas 添加行而不是列

标签 python pandas append

我是 pandas 的新手,但我想简单地添加一行

class Security:
    def __init__(self):
        self.structure = ['timestamp', 'open', 'high', 'low', 'close', 'vol']
        self.df = pd.DataFrame(columns=self.structure)  # index =
    def whats_inside(self):
        return self.df
    """
    Some skipped code...
    """
    def add_data(self, timestamp, open, high, low, close, vol):
        data = [timestamp, open, high, low, close, vol]
        self.df = self.df.append (data)

sec = Security()
print sec.whats_inside()
sec.add_data ('2015/06/01', '1', '2', '0.5', '1', '100')
print sec.whats_inside()

但是输出是:

            0 close high  low open timestamp  vol
0  2015/06/01   NaN  NaN  NaN  NaN       NaN  NaN
1           1   NaN  NaN  NaN  NaN       NaN  NaN
2           2   NaN  NaN  NaN  NaN       NaN  NaN
3         0.5   NaN  NaN  NaN  NaN       NaN  NaN
4           1   NaN  NaN  NaN  NaN       NaN  NaN
5         100   NaN  NaN  NaN  NaN       NaN  NaN

这意味着,我要添加一列而不是行。是的,我试过谷歌,但仍然没有明白如何使它成为简单的 pythonic 方式。

附注我知道这很简单,但我只是遗漏了一些重要的东西。

最佳答案

添加新行的方法有多种。也许最简单的方法(如果您想将行添加到末尾)是使用 loc:

df.loc[len(df)] = ['val_a', 'val_b', .... ]

loc 需要一个索引。 len(df) 将返回数据帧中的行数,因此新行将添加到数据帧的末尾。

'['val_a', 'val_b', .... ]' 是行的值列表,与列的顺序相同,所以列表的长度必须等于列数,否则你会得到一个 ValueError 异常。 一个异常(exception)是,如果您希望所有列都具有相同的值,您可以将该值作为列表中的单个元素,例如 df.loc[len(df)] = ['aa '].

注意:一个好主意是在使用此方法之前始终使用 reset_index,因为如果您删除了一行或处理了过滤后的数据框,则无法保证行的索引将与行数同步。

关于python - Pandas 添加行而不是列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31199710/

相关文章:

python - Django : Passing api's json to template for use in a table

在 Julia 中追加

C++ - 将文本追加到仅具有 NTFS "append data"权限的文件

go - 如何在 StorJ 中已上传的文件中 append 字节数据?

python - 如何从 python 中的 xmlNode 获取 xpathContext

python - 是否可以捕获 Python 应用程序生成的任何回溯?

python - 如何将单个条件应用于数据框中的列列表并将值添加到第四列而不使用多个 OR

python - pandas KeyError,使用 float 时找不到索引

python - Pandas:DataFrameGroupby 的聚合

python - 基于一列元素对两个数组进行排序和连接