上述情况在不知道哪一列修改了,修改前会备份为临时变量back,需要先对比两个Dataframe类型变量,然后将变更的列输出,要求输出变化前和变化后的值
时间: 2024-10-18 17:03:19 浏览: 15
如果你想检测两个DataFrame之间的列值变化,即使你不知道具体的列名,可以按照以下步骤操作:
1. **数据备份**:创建一个临时变量 `backup_df` 来保存第一个DataFrame的副本。
```python
backup_df = df.copy()
```
2. **数据对比**:计算两个DataFrame的差集,这将给出哪些列有不同。
```python
diff_cols = set(backup_df.columns) ^ set(df.columns)
```
`^` 表示集合的差集运算,得到两个DataFrame中独有的列。
3. **遍历差异列**:对于每个差异列,提取出修改前后的值。
```python
for col in diff_cols:
backup_col = backup_df[col]
current_col = df[col]
# 检查列值是否有变化
changed_rows = backup_col != current_col
# 提取变化前后的行,通常这里需要进一步处理,如筛选变化的行
changed_rows_series = changed_rows.to_frame(name='Change')
# 输出变化前后的值
print(f"Column {col}:")
print("Before change:", backup_col[changed_rows].values)
print("After change:", current_col[changed_rows].values)
print("\n")
```
上述代码会打印出每列发生变化时,变化前后的值。注意,这里的`changed_rows` Series仅表示哪些行有变化,并未包含具体的新旧值。
阅读全文