python - 在数据框中相互减去每一列
问题描述
我们有一个df
包含 n 列的 as 数据框。我想从彼此中减去每一列,例如(n 是列数):
如果 n = 3 则形成新列 = 3
如果 n = 4 则形成新列 = 6
如果 n = 5,则形成新列 = 10
例如: - 数据集包含 4 个日期列,分别是开始日期、结束日期、出生日期和促销日期。然后,您将通过一次取 2 个日期来形成 6 个新列,其中包含这些日期的差异。新列之一是 DOB - 结束日期。
解决方案
假设您正在寻找这样的东西 - 将每对列的差异转换为每对的新列
考虑pd.DataFrame
具有 5 行和 4 列的 a - A、B、C、D - 具有所有随机值
df = pd.DataFrame(np.random.randint(0, 5, size=(5, 4)), columns=list('ABCD'))
对于每对列(使用 获取对itertools.combinations()
,创建一个以该对作为列名的新列(或您希望新列名的任何内容)并将 的差异设置tuple
为值。
for comb in (list(itertools.combinations(df.columns, r=2))):
df[comb] = (df[comb[0]] - df[comb[1]])
print(df)
结果:
A B C D (A, B) (A, C) (A, D) (B, C) (B, D) (C, D)
0 0 1 1 1 -1 -1 -1 0 0 0
1 1 0 0 1 1 1 0 0 -1 -1
2 2 4 0 2 -2 2 0 4 2 -2
3 0 2 4 2 -2 -4 -2 -2 0 2
4 4 1 3 0 3 1 4 -2 1 3
这适用于任意数量的列。
推荐阅读
- python - 通过python smtplib发送电子邮件时将href链接添加到图像附件
- ruby - 如何让 Sinatra 正确处理包含数组的 JSON 请求?
- django - Django:搜索视图的 get_queryset 方法以使用多个字段进行过滤
- javascript - pdf js无法加载worker
- javascript - 在 A-Frame 场景中隐藏鼠标指针(小手)
- java - 如何为列表视图中的每个项目定义特定操作
- algorithm - 有约束的匹配算法
- python - 如何在 python 正则表达式中找到字符串的特定部分?
- java - 将 CDI 添加到 JAX-WS 应用程序
- ios - 从底部滑动的弹出视图在非 X 设备上存在间隙