我有一个数据帧:
s1 = pd.Series([5, 6, 7])
s2 = pd.Series([7, 8, 9])
df = pd.DataFrame([list(s1), list(s2)], columns = ["A", "B", "C"])
A B C
0 5 6 7
1 7 8 9
[2 rows x 3 columns]
我需要添加第一行[2,3,4]来获得:
A B C
0 2 3 4
1 5 6 7
2 7 8 9
我尝试了append()
和concat()
函数,但找不到正确的方法。
如何添加/插入系列到数据框?
实现这一点的一个方法是
>>> pd.DataFrame(np.array([[2, 3, 4]]), columns=['A', 'B', 'C']).append(df, ignore_index=True)
Out[330]:
A B C
0 2 3 4
1 5 6 7
2 7 8 9
通常,附加数据帧最容易,而不是序列。在您的情况下,因为您希望新行“在顶部”(具有起始id),并且没有函数pd.prepend()
,所以我首先创建新的数据帧,然后附加旧的数据帧。
ignore_index
将忽略数据帧中旧的正在进行的索引,并确保第一行实际上以index1
开始,而不是以index0
重新启动。
典型免责声明:Cetero censeo。。。追加行是一种效率很低的操作。如果您关心性能,并且能够以某种方式确保首先创建具有正确(更长)索引的数据帧,然后将额外的行插入数据帧,那么您肯定应该这样做。见:
>>> index = np.array([0, 1, 2])
>>> df2 = pd.DataFrame(columns=['A', 'B', 'C'], index=index)
>>> df2.loc[0:1] = [list(s1), list(s2)]
>>> df2
Out[336]:
A B C
0 5 6 7
1 7 8 9
2 NaN NaN NaN
>>> df2 = pd.DataFrame(columns=['A', 'B', 'C'], index=index)
>>> df2.loc[1:] = [list(s1), list(s2)]
到目前为止,我们拥有您所拥有的df
:
>>> df2
Out[339]:
A B C
0 NaN NaN NaN
1 5 6 7
2 7 8 9
但是现在您可以很容易地插入一行,如下所示。由于空间是预先分配的,这更有效率。
>>> df2.loc[0] = np.array([2, 3, 4])
>>> df2
Out[341]:
A B C
0 2 3 4
1 5 6 7
2 7 8 9
不确定您是如何调用conat()
的,但是只要两个对象是相同类型的,它就应该工作。也许问题是你需要将你的第二个向量转换到数据框?使用你定义的df为我工作:
df2 = pd.DataFrame([[2,3,4]], columns=['A','B','C'])
pd.concat([df2, df])
只需使用loc
将行分配给特定索引即可:
df.loc[-1] = [2, 3, 4] # adding a row
df.index = df.index + 1 # shifting index
df = df.sort_index() # sorting by index
你会如愿得到:
A B C
0 2 3 4
1 5 6 7
2 7 8 9
见熊猫留档索引:设置与放大。
我想使用两列作为行ID,同时计算基于时间的分组。请看下图: 转化成这样: 正在发生的是,X在时间10发生了0次,但在15和23发生了1次。 Y在10点钟发生了3次,但在15和23没有。等等。
问题内容: 我可以从python连接到本地mysql数据库,并且可以创建,选择并插入单个行。 我的问题是:我可以直接指示mysqldb提取整个数据帧并将其插入到现有表中,还是需要遍历行? 在这两种情况下,对于具有ID和两个数据列以及匹配的数据帧的非常简单的表,python脚本的外观如何? 问题答案: 更新: 现在有一种方法,而不是: 另请注意:语法可能会在熊猫0.14中更改… 您可以使用MySQL
问题内容: 我正在编写一个脚本,以将带有标头的大.xlsx文件减少到一个csv中,然后根据标头名称仅写有所需列的新csv文件。 我得到的错误是最后一部分代码,它说 我确定我忽略了一些愚蠢的事情,但是我已经阅读了熊猫网站上的to_csv文档,但我仍然感到茫然。我知道我使用了不正确的to_csv参数,但我似乎无法理解我猜的文档。 任何帮助表示赞赏,谢谢! 问题答案: 选择特定列的方法是这样的-
问题内容: 这可能很容易,但是我有以下数据: 在数据框1中: 在数据框2中: 我想要一个具有以下形式的数据框: 我尝试使用该方法,但是得到了交叉连接(即笛卡尔积)。 什么是正确的方法? 问题答案: 通常看来,您只是在寻找联接:
问题内容: 我正在查询一个SQL数据库,我想使用熊猫来处理数据。但是,我不确定如何移动数据。以下是我的输入和输出。 问题答案: 答案更简短
我正在使用从h5文件加载的调查数据作为通过熊猫包。在此中,所有行都是单个调查的结果,而列是单个调查中所有问题的答案。 我的目标是将此数据集缩减为更小的,仅包括在某个问题上具有某个描述答案的行,即在本列中具有相同的值。我能够确定具有此条件的所有行的索引值,但我找不到如何删除这些行或仅使用这些行创建新的df。