python - 计算具有相同基础名称的列之间的差异
问题描述
我有一个比较新旧数据的df。有没有办法计算新旧数据之间的差异?一般而言,我不想对数据框进行排序,而只想比较具有前缀“_old”和“_new”的根变量
df
apple_old daily banana_new banana_tree banana_old apple_new
0 5 3 4 2 10 6
for x in df.columns:
if x.endswith("_old") and x.endswith("_new"):
x = x.dif()
预期产出;括号只是为了清楚起见
df_diff
apple_diff(old-new) banana_diff(old-new)
0 -1 (5-6) 6 (10-4)
解决方案
让我们尝试创建一个多索引,然后old
从new
.
设置:
import pandas as pd
df = pd.DataFrame({'apple_old': {0: 5}, 'daily': {0: 3}, 'banana_new': {0: 4},
'banana_tree': {0: 2}, 'banana_old': {0: 10},
'apple_new': {0: 6}})
# Creation of Multi-Index:
df.columns = df.columns.str.rsplit('_', n=1, expand=True).swaplevel(0, 1)
# Subtract old from new:
output_df = (df['old'] - df['new']).add_suffix('_diff')
# Display:
print(output_df)
apple_diff banana_diff
0 -1 6
str.rsplit
具有最大拆分长度的多索引,n=1
因此_
可以安全地处理多个:
df.columns = df.columns.str.rsplit('_', n=1, expand=True).swaplevel(0, 1)
old NaN new tree old new
apple daily banana banana banana apple
0 5 3 4 2 10 6
然后选择:
df['old']
apple banana
0 5 10
df['new']
banana apple
0 4 6
减法将按列对齐。然后add_suffix
添加_diff
到列。
推荐阅读
- sql-server - 先进先出股票交易 - 计算累积盈亏
- c - execve() 有一个奇怪的行为,具体取决于未使用变量的状态
- css - 如何使用媒体查询控制屏幕分辨率?
- c++ - 如何让一个大的十进制数组在二进制搜索中工作
- css - 从本地推送到 Wordpress 站点后,媒体查询不起作用
- c++ - 在 C++ 中结合 OpenCVs k-means 聚类和 Vigra
- python - 抓取网页时避免重复单词_python
- javascript - 动态获取 html + css + (javascript eventlistener 不工作)
- r - 如何在R中的数据框中仅删除字符串的一部分?
- emv - 9F1D 是一个配置还是从其他配置派生的