Pandas在Index上方插入一行,在Dataframe中插入Series数据

时间:2016-09-06 22:17:44

标签: python pandas indexing dataframe row

我已经进行了几次试验,到目前为止似乎没有任何工作。 我试过df.insert(0, "XYZ", 555)似乎有效,直到它出于某种原因我不确定。

我理解问题是Index不被视为系列,因此df.iloc [0]不允许您直接在Index列上方插入数据。

我还尝试手动在索引列表中添加数据帧定义的一部分,第一个索引的值为“XYZ”..但没有任何工作。

感谢您的帮助

A B C D是我的专栏。 range(5)是我的索引。我试图在下面获得这个,对于以type开头的任意行,然后是一个字符串列表..谢谢

         A         B         C         D

type 'string1' 'string2' 'string3' 'string4'

0
1
2
3
4

如果使用Timestamps作为索引添加一行,并且具有自己的自定义索引的自定义单行将引发错误: ValueError:无法在没有偏移的情况下向Timestamp添加整数值。我猜它是由于操作数的不同,如果我从时间戳中减去一个整数,例如..?我怎么能以通用的方式解决这个问题?谢谢! -

1 个答案:

答案 0 :(得分:2)

如果你想在第一行之前插入行,你可以这样做:

数据:

In [57]: df
Out[57]:
  id  var
0  a    1
1  a    2
2  a    3
3  b    5
4  b    9

添加一行:

In [58]: df.loc[df.index.min() - 1] = ['z', -1]

In [59]: df
Out[59]:
   id  var
 0  a    1
 1  a    2
 2  a    3
 3  b    5
 4  b    9
-1  z   -1

排序索引:

In [60]: df = df.sort_index()

In [61]: df
Out[61]:
   id  var
-1  z   -1
 0  a    1
 1  a    2
 2  a    3
 3  b    5
 4  b    9

可选择重置您的索引:

In [62]: df = df.reset_index(drop=True)

In [63]: df
Out[63]:
  id  var
0  z   -1
1  a    1
2  a    2
3  a    3
4  b    5
5  b    9