【问题标题】:Pandas Insert a row above the Index and the Series data in a DataframePandas 在 Dataframe 中的 Index 和 Series 数据上方插入一行
【发布时间】:2017-01-14 11:32:59
【问题描述】:

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

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

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

感谢您的帮助

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

         A         B         C         D

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

0
1
2
3
4

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

【问题讨论】:

标签: python pandas indexing dataframe row


【解决方案1】:

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

数据:

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

【讨论】:

  • 嗨,谢谢。我的索引是由日期组成的,所以当我添加一个像你展示的那样的索引时,它会抛出错误:ValueError:无法在没有偏移的情况下将整数值添加到时间戳。我猜这是由于标签类型的不同?我怎样才能以通用的方式解决这个问题?谢谢!
猜你喜欢
  • 2021-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-04
  • 1970-01-01
  • 2017-01-12
  • 2018-02-17
  • 2018-04-21
相关资源
最近更新 更多