pandas 如何在python dataframe中添加最后一项并删除第一项?

gupuwyp2  于 2022-12-02  发布在  Python
关注(0)|答案(3)|浏览(315)

我的 Dataframe 如下:

data = {
  "a": [420, 380, 390],
  "b": [50, 40, 45]
}

df = pd.DataFrame(data)

我想在这个 Dataframe 的末尾添加新的项目,并删除第一个项目。我的意思是,每次添加的内容将是3。
新增项目

{"a": 300, b: 88}

最后一种情况是:

data = {
  "a": [380, 390, 300],
  "b": [40, 45, 88]
}

有什么捷径吗?

72qzrwbm

72qzrwbm1#

使用concat

df = pd.concat([df.iloc[1:],
                pd.DataFrame.from_dict({0: d}, orient='index')], 
               ignore_index=True)

输出量:

a   b
0  380  40
1  390  45
2  300  88
bvjveswy

bvjveswy2#

您可以使用pd.concat,因为append正在被弃用。

dct = {"a": 300, "b": 88}
df_new = pd.concat([df, pd.Series(dct).to_frame().T]
                  ).iloc[1:, :].reset_index(drop=True)
print(df_new)

# If maybe the values of 'dict' have multiple items.
# dct = {"a": [300, 400], "b": [88, 98]}
# df_new = pd.concat([df, pd.DataFrame(dct)]
#                   ).iloc[1:, :].reset_index(drop=True)

您可以使用pandas.DataFrame.appenddf添加新行,然后删除第一行基数index。(如果必要,最后使用reset_index

dct = {"a": 300, "b": 88}
df_new = df.append(dct, ignore_index=True).drop(0, axis=0).reset_index(drop=True)
print(df_new)

输出量:

a   b
0  380  40
1  390  45
2  300  88
ezykj2lf

ezykj2lf3#

您可以按df.append()将新行追加到现有 Dataframe 。

new_row = {"a": 300, "b": 88}
df2 = df.append(new_row, ignore_index=True)

(请注意,append适用于Dataframedict对象,但后者需要ignore_index=True
您可以通过以下方法之一从 Dataframe 中删除第一行:
1.使用iloc选择

df3 = df2.iloc[1:, :]

这会分割除第一列以外的所有列,以及所有栏。
1.使用drop删除第一行。

df3 = df2.drop(df.index[0], axis=0, inplace=False)

或者,您可以使用inplace=True就地修改df2,在这种情况下将返回None

相关问题