Python 将数据帧中的每一列彼此分块

Python 将数据帧中的每一列彼此分块,python,python-3.x,pandas,Python,Python 3.x,Pandas,我们有一个df-as数据帧,包含n个列。我想从每一列中减去每一列,例如n是列数: 如果n=3,则形成的新列=3 如果n=4,则形成的新列=6 如果n=5,则形成的新列=10 例如:-数据集包含4个日期列,即开始日期、结束日期、DOB和促销日期。然后,通过一次取2个日期,您将形成6个包含这些日期差异的新列。新列中的一个将是DOB-结束日期 假设您正在寻找类似的内容—将每对列的差异转换为每对列的新列 考虑一个包含5行和4列(a、B、C、D)以及所有随机值的pd.DataFrame df = pd.D

我们有一个df-as数据帧,包含n个列。我想从每一列中减去每一列,例如n是列数:

如果n=3,则形成的新列=3

如果n=4,则形成的新列=6

如果n=5,则形成的新列=10

例如:-数据集包含4个日期列,即开始日期、结束日期、DOB和促销日期。然后,通过一次取2个日期,您将形成6个包含这些日期差异的新列。新列中的一个将是DOB-结束日期


假设您正在寻找类似的内容—将每对列的差异转换为每对列的新列

考虑一个包含5行和4列(a、B、C、D)以及所有随机值的pd.DataFrame

df = pd.DataFrame(np.random.randint(0, 5, size=(5, 4)), columns=list('ABCD'))
对于每对列,使用itertools.combinations获取对,创建一个新列,将对作为列名或任何您希望的新列名,并将元组的差值设置为值

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

这适用于任意数量的列。

您可以添加输入、数据帧和预期输出的示例吗?请详细说明你的问题。你到底想要什么?据我所知,你想要在另一组新列中的每一列组合上有所不同。如果您提供适当的样本数据集和预期结果,您更有可能得到答案。我用一个示例编辑了我的问题。是的,这是准确的解决方案。谢谢大家!@HarshKothari很高兴我能帮上忙。我已经对你的答案投了更高的票,好像我没有足够的声誉,它不会被显示出来。谢谢,祝你快乐