我有一个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)
发布于 2021-07-13 13:39:56
让我们尝试创建一个多索引,然后从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
添加到列中。
https://stackoverflow.com/questions/68363398
复制相似问题