0

说我有一个数据框df

import pandas as pd
df = pd.DataFrame()

我有以下元组和值:

column_and_row = ('bar', 'foo')
value = 56

我怎样才能最容易地将此​​元组添加到我的数据框中,以便:

df['bar']['foo'] 

回报56

如果我有这样的元组列表和值列表怎么办?例如

columns_and_rows = [A, B, C, ...]
values = [5, 10, 15]

其中A和是列BC行的元组(类似于column_and_row)。

同样,如何使用Series? 来完成此操作,例如:

import pandas as pd
srs = pd.Series()

我想用索引和值向它添加一项,以便:'foo'2

srs['foo'] 

回报2

注意: 我知道这些都不是创建dataframesor的有效方法series,但我需要一个解决方案,让我在别无选择时以这种方式有机地扩展我的结构。

4

1 回答 1

3

对于系列,您可以使用 来完成append,但您必须首先根据您的值创建系列:

>>> print x
A    1
B    2
C    3
>>> print x.append( pandas.Series([8, 9], index=["foo", "bar"]))
A      1
B      2
C      3
foo    8
bar    9

对于 DataFrame,您也可以使用appendor concat,但仅对单个单元格执行此操作没有意义。DataFrames 是表格的,因此您只能添加整行或整列。 该文档有很多示例,并且对此还有其他问题

编辑:显然你实际上可以用df.set_value('newRow', 'newCol', newVal). 但是,如果该行/列不存在,这实际上将创建一个全新的行和/或列,而创建的行/列中的其余值将填充为 NaN。请注意,在这种情况下,将返回一个新对象,因此您必须df = df.set_value('newRow', 'newCol', newVal)修改原始对象。

然而,现在不管你怎么做,这将是低效的。Pandas 数据结构基于 Numpy,并且从根本上依赖于提前知道数组的大小。您可以添加行和列,但每次这样做都会创建全新的数据结构,因此如果您经常这样做,它会比使用普通的 Python 列表/dicts 慢。

于 2013-04-04T00:44:19.487 回答