Python 将数据帧中的每一列彼此分块
我们有一个df-as数据帧,包含n个列。我想从每一列中减去每一列,例如n是列数: 如果n=3,则形成的新列=3 如果n=4,则形成的新列=6 如果n=5,则形成的新列=10 例如:-数据集包含4个日期列,即开始日期、结束日期、DOB和促销日期。然后,通过一次取2个日期,您将形成6个包含这些日期差异的新列。新列中的一个将是DOB-结束日期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
假设您正在寻找类似的内容—将每对列的差异转换为每对列的新列 考虑一个包含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很高兴我能帮上忙。我已经对你的答案投了更高的票,好像我没有足够的声誉,它不会被显示出来。谢谢,祝你快乐