两个DataFrame相减,并生成一个新的DataFrame
时间: 2023-08-14 22:06:50 浏览: 973
您可以使用 Pandas 库中的 `sub()` 函数来执行两个 DataFrame 的相减操作,并生成一个新的 DataFrame。以下是一个示例代码:
```python
import pandas as pd
# 创建第一个 DataFrame
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
# 创建第二个 DataFrame
df2 = pd.DataFrame({'A': [3, 2, 1], 'B': [6, 5, 4]})
# 相减并生成新的 DataFrame
df3 = df1.sub(df2)
print(df3)
```
运行以上代码将输出以下结果:
```
A B
0 -2 -2
1 0 0
2 2 2
```
在这个示例中,`df1` 和 `df2` 是两个要相减的 DataFrame,`df3` 是相减后生成的新 DataFrame。
相关问题
两个DataFrame行的顺序不一样,需要对两个DataFrame相减,并生成一个新的DataFrame
如果两个 DataFrame 的行的顺序不一样,并且您想要执行相减操作并生成一个新的 DataFrame,可以使用 `pandas.DataFrame.reindex()` 函数对其中一个 DataFrame 进行重索引,以匹配另一个 DataFrame 的顺序。然后,可以使用 `sub()` 函数执行相减操作。
以下是一个示例代码:
```python
import pandas as pd
# 创建第一个 DataFrame
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
# 创建第二个 DataFrame
df2 = pd.DataFrame({'A': [3, 2, 1], 'B': [6, 5, 4]})
# 对第二个 DataFrame 进行重索引以匹配第一个 DataFrame 的顺序
df2 = df2.reindex(df1.index)
# 相减并生成新的 DataFrame
df3 = df1.sub(df2)
print(df3)
```
运行以上代码将输出以下结果:
```
A B
0 -2 -2
1 0 0
2 2 2
```
在这个示例中,我们使用 `reindex()` 函数将 `df2` 重新索引为与 `df1` 相同的行顺序。然后,我们使用 `sub()` 函数对两个 DataFrame 进行相减操作,并生成了新的 DataFrame `df3`。
请注意,`reindex()` 函数会根据指定的索引值重新排序 DataFrame 的行。在这种情况下,我们使用了 `df1.index` 来重新索引 `df2`,以确保两个 DataFrame 的行顺序相同。
两个DataFrame相减,并生成一个新的DataFrame,行不一样
如果两个DataFrame的行数不一样,并且您想要执行相减操作并生成一个新的DataFrame,可以使用`pandas.DataFrame.sub()`函数。此函数将根据索引对其两个DataFrame,并在行不匹配的位置使用NaN填充。
以下是一个示例代码:
```python
import pandas as pd
# 创建第一个 DataFrame
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
# 创建第二个 DataFrame
df2 = pd.DataFrame({'A': [3, 2], 'B': [6, 5], 'C': [7, 8]})
# 相减并生成新的 DataFrame
df3 = df1.sub(df2)
print(df3)
```
运行以上代码将输出以下结果:
```
A B C
0 -2.0 -2.0 NaN
1 0.0 0.0 NaN
2 NaN NaN NaN
```
在这个示例中,`df1`和`df2`是两个要相减的DataFrame。`df3`是相减后生成的新DataFrame。由于行数不一致,`df3`中多出的行和列将填充为NaN。
请注意,在进行相减操作时,Pandas会根据索引对齐两个DataFrame的行和列。如果某个位置的行或列在另一个DataFrame中不存在,则使用NaN填充。
阅读全文