DataFrame中添加和删处‘行’

添加:在 Pandas 中,df.loc[len(df)] = new_values 这行代码用于在 DataFrame df 的末尾添加一行新数据。这里的 len(df) 返回的是 DataFrame 当前的行数,因此 df.loc[len(df)] 指向的是一个新的行索引,这个索引在当前 DataFrame 中还不存在。

以下是这行代码的详细解释:

  1. df:代表你的 DataFrame 对象。

  2. loc:是 Pandas 提供的基于标签的索引器,用于访问或修改 DataFrame 中的数据。

  3. len(df):这是一个函数调用,返回 DataFrame df 当前的行数。因为 DataFrame 的索引是从 0 开始的,所以 len(df) 实际上是指向下一个可用的行索引。

  4. new_values:是一个序列(如列表、数组、Series 等),包含了新行的所有列的值。这个序列的长度必须与 DataFrame 的列数相匹配。

  5. 赋值操作:通过将 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 是一个或多个要删除的行的索引标签。以下是详细解释:

  1. df:代表你的 DataFrame 对象。

  2. drop:是 Pandas 提供的方法,用于删除 DataFrame 中的行或列。

  3. index:是你想要删除的行的索引标签。它可以是一个标签(如字符串或整数),也可以是一个包含多个标签的列表。这些标签指定了要从 DataFrame 中删除的行。

  4. 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' 是你想要删除的列的名称。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值