小能豆

向 pandas 数据框中插入一行

py

我有一个数据框:

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()这些功能,但找不到正确的方法。

如何向数据框添加/插入系列?


阅读 16

收藏
2024-09-20

共1个答案

小能豆

pandas您可以使用pd.concat()pd.DataFrame.loc[]将新行插入到 DataFrame 开头来添加新行。由于您想将该行添加[2, 3, 4]为第一行,因此以下是实现方法:

方法 1:pd.concat()使用ignore_index

您可以将新的 DataFrame(包含要插入的行)与现有 DataFrame 连接,然后重置索引。

import pandas as pd

# Create the original DataFrame
s1 = pd.Series([5, 6, 7])
s2 = pd.Series([7, 8, 9])
df = pd.DataFrame([list(s1), list(s2)], columns=["A", "B", "C"])

# Create the new row as a DataFrame
new_row = pd.DataFrame([[2, 3, 4]], columns=["A", "B", "C"])

# Concatenate the new row at the top and reset index
df = pd.concat([new_row, df], ignore_index=True)

print(df)

方法 2:使用loc[]在开头插入

您还可以使用DataFrame.loc[]在开头插入新行,然后重新索引 DataFrame。

import pandas as pd

# Create the original DataFrame
s1 = pd.Series([5, 6, 7])
s2 = pd.Series([7, 8, 9])
df = pd.DataFrame([list(s1), list(s2)], columns=["A", "B", "C"])

# Insert new row at the top
df.loc[-1] = [2, 3, 4]  # Add new row at index -1
df = df.sort_index().reset_index(drop=True)  # Reset index

print(df)

两种方法的输出:

   A  B  C
0  2  3  4
1  5  6  7
2  7  8  9

在这两种方法中,新行都[2, 3, 4]添加到开头,并且重新索引 DataFrame 以确保索引是连续的。

2024-09-20