添加:在 Pandas 中,df.loc[len(df)] = new_values
这行代码用于在 DataFrame
df
的末尾添加一行新数据。这里的 len(df)
返回的是 DataFrame
当前的行数,因此 df.loc[len(df)]
指向的是一个新的行索引,这个索引在当前 DataFrame
中还不存在。
以下是这行代码的详细解释:
-
df
:代表你的DataFrame
对象。 -
loc
:是 Pandas 提供的基于标签的索引器,用于访问或修改DataFrame
中的数据。 -
len(df)
:这是一个函数调用,返回DataFrame
df
当前的行数。因为DataFrame
的索引是从 0 开始的,所以len(df)
实际上是指向下一个可用的行索引。 -
new_values
:是一个序列(如列表、数组、Series
等),包含了新行的所有列的值。这个序列的长度必须与DataFrame
的列数相匹配。 -
赋值操作:通过将
new_values
赋值给df.loc[len(df)]
,你实际上是在DataFrame
的末尾添加了一个新的行,并用new_values
中的值填充它。
示例代码:
假设你有一个 DataFrame
如下所示:
import pandas as pd
# 创建 DataFrame
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['New York', 'Los Angeles', 'Chicago']
}
df = pd.DataFrame(data)
# 打印原始 DataFrame
print("原始 DataFrame:")
print(df)
# 添加一个新行
new_values = ['David', 28, 'Boston']
df.loc[len(df)] = new_values
# 打印添加新行后的 DataFrame
print("\n添加新行后的 DataFrame:")
print(df)
输出将是:
原始 DataFrame:
Name Age City
0 Alice 25 New York
1 Bob 30 Los Angeles
2 Charlie 35 Chicago
添加新行后的 DataFrame:
Name Age City
0 Alice 25 New York
1 Bob 30 Los Angeles
2 Charlie 35 Chicago
3 David 28 Boston
在这个例子中,我们向 DataFrame
添加了一个新的行,其中包含姓名 'David',年龄 28,城市 'Boston'。
注意事项:
- 确保
new_values
的长度与DataFrame
的列数相匹配。如果不匹配,Pandas 会抛出一个错误。 - 这种方法是向
DataFrame
动态添加新行的简单方式,适合在数据收集过程中逐步构建数据集。 - 如果
DataFrame
有特定的索引标签,这种方法可能会覆盖或打乱索引的顺序,因为新行将被添加到索引的最大值之后。在这种情况下,可能需要手动管理索引以保持数据的一致性。
删除:在 Pandas 中,df.drop(index, inplace=True)
这行代码用于从 DataFrame
df
中删除指定的行。这里的 index
是一个或多个要删除的行的索引标签。以下是详细解释:
-
df
:代表你的DataFrame
对象。 -
drop
:是 Pandas 提供的方法,用于删除DataFrame
中的行或列。 -
index
:是你想要删除的行的索引标签。它可以是一个标签(如字符串或整数),也可以是一个包含多个标签的列表。这些标签指定了要从DataFrame
中删除的行。 -
inplace=True
:表示你要在原地修改DataFrame
,即直接在原始数据上进行删除操作,而不是创建一个新的DataFrame
副本来存储更改。如果设置为False
(默认值),则drop
方法会返回一个删除了指定行的新DataFrame
,而原始DataFrame
不会改变。
示例代码:
假设你有一个 DataFrame
如下所示:
import pandas as pd
# 创建 DataFrame
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David'],
'Age': [25, 30, 35, 40],
'City': ['New York', 'Los Angeles', 'Chicago', 'Houston']
}
df = pd.DataFrame(data)
# 打印原始 DataFrame
print("原始 DataFrame:")
print(df)
# 删除索引标签为 1 的行(即 Bob 的行)
df.drop(index=1, inplace=True)
# 打印删除行后的 DataFrame
print("\n删除行后的 DataFrame:")
print(df)
输出将是:
原始 DataFrame:
Name Age City
0 Alice 25 New York
1 Bob 30 Los Angeles
2 Charlie 35 Chicago
3 David 40 Houston
删除行后的 DataFrame:
Name Age City
0 Alice 25 New York
2 Charlie 35 Chicago
3 David 40 Houston
在这个例子中,我们删除了索引标签为 1 的行,即 Bob 的行。
注意事项:
- 确保你提供的
index
确实存在于DataFrame
中,否则会抛出KeyError
。 - 使用
inplace=True
时要小心,因为这会直接改变原始数据。如果你希望保留原始数据,可以不使用inplace=True
,而是将结果赋值给一个新的变量。 - 如果你想要删除列,可以使用
df.drop(columns='column_name', axis=1, inplace=True)
,其中'column_name'
是你想要删除的列的名称。