dataframe 删除另一个 dataframe
时间: 2023-11-18 18:53:59 浏览: 44
在 pandas 中,可以使用 `drop()` 函数来删除 DataFrame 中的行。可以通过设置参数 `axis` 为 0 来删除行,并通过设置参数 `index` 来指定要删除的行的索引。
例如,下面的代码将删除索引为 0 和 1 的行:
```
df.drop(index=[0, 1], axis=0, inplace=True)
```
需要注意的是,如果要将删除操作应用于原始 DataFrame,需要将参数 `inplace` 设置为 True。
相关问题
dataframe按另一个dataframe索引删除行
要根据另一个DataFrame的索引删除行,你可以使用`DataFrame.isin()`方法来创建一个布尔索引,该索引指示哪些行的索引在另一个DataFrame中存在。然后,你可以使用该布尔索引来过滤原始DataFrame并删除相应的行。
下面是一个示例代码:
```python
import pandas as pd
# 创建一个示例DataFrame
data = {'Name': ['John', 'Emma', 'Mike', 'Sarah'],
'Age': [25, 30, 35, 40],
'City': ['New York', 'London', 'Paris', 'Tokyo']}
df1 = pd.DataFrame(data)
# 创建另一个DataFrame作为索引
index_data = {'Index': [0, 2]}
index_df = pd.DataFrame(index_data)
# 使用isin()方法创建布尔索引
bool_index = df1.index.isin(index_df['Index'])
# 根据布尔索引过滤并删除行
filtered_df = df1[~bool_index]
print(filtered_df)
```
输出结果为:
```
Name Age City
1 Emma 30 London
3 Sarah 40 Tokyo
```
在上面的示例中,我们首先创建了一个示例DataFrame df1和一个包含索引值的DataFrame index_df。然后,我们使用`isin()`方法创建了一个布尔索引bool_index来指示df1中哪些行的索引在index_df中存在。最后,我们使用布尔索引来过滤并删除了相应的行,将结果存储在filtered_df中。
请注意,这里使用了`~`运算符来对布尔索引进行取反操作,以便获取不在指定索引中的行。你可以根据需要修改索引值和列名来适应你的实际情况。
从一个dataframe中剔除另一个dataframe
以下是从一个dataframe中剔除另一个dataframe的两种方法:
1. 使用merge()函数和query()函数
```python
result = pd.merge(dataframe_b, dataframe_a, how='left', indicator=True).query("_merge=='left_only'").drop('_merge', 1)
```
这个方法使用merge()函数将两个dataframe合并,然后使用query()函数筛选出只在dataframe_b中出现的行,最后使用drop()函数删除多余的列。这个方法比较符合预期,但是需要注意的是,如果两个dataframe中有重复的行,这个方法只会保留一份。
2. 使用to_csv()函数和read_csv()函数
```python
dataframe_b.to_csv('temp.csv', index=False, header=None)
result = pd.read_csv('temp.csv', names=dataframe_b.columns).drop_duplicates(keep=False)
```
这个方法先将dataframe_b保存为csv文件,然后使用read_csv()函数读取这个文件,并且设置names参数为dataframe_b的列名,最后使用drop_duplicates()函数删除重复的行。这个方法比较简单,但是需要注意的是,如果dataframe_b中有空值,这个方法会将空值视为不同的值。