【发布时间】:2017-09-08 16:48:02
【问题描述】:
我试图将所有列除以每一列,但只划分一次(A/B 但不是 B/A)
来自Dividing each column by every other column and creating a new dataframe from the results
感谢@COLDSPEED,以下代码将所有列除以每一列(并添加相应的新列)。
我不知道如何避免配对重复。
import pandas as pd
import numpy as np
np.random.seed(42)
df = pd.DataFrame(np.random.randint(0,9,size=(5, 3)), columns=list('ABC'))
ratio_df = pd.concat([df[df.columns.difference([col])].div(df[col], axis=0) \
for col in df.columns], axis=1)
print ratio_df
哪些输出:
原始数据框
A B C
0 6 3 7
1 4 6 2
2 6 7 4
3 3 7 7
4 2 5 4
结果数据框
B C A C A B
0 0.500000 1.166667 2.000000 2.333333 0.857143 0.428571
1 1.500000 0.500000 0.666667 0.333333 2.000000 3.000000
2 1.166667 0.666667 0.857143 0.571429 1.500000 1.750000
3 2.333333 2.333333 0.428571 1.000000 0.428571 1.000000
4 2.500000 2.000000 0.400000 0.800000 0.500000 1.250000
在第 0 行,第一列 B 的值为 B/A 或 3/6 = 0.5,第一列 A 为 A/B 或 6/3 = 2
我想为配对操作只保留一个结果(例如,只保留左列/右列)。
A/B A/C B/C
0 2.000000 0.857143 0.428571
1 0.666667 2.000000 3.000000
2 0.857143 1.500000 1.750000
3 0.428571 0.428571 1.000000
4 0.400000 0.500000 1.250000
我没能找到这件事的线索。
我该如何解决?
谢谢!
【问题讨论】:
标签: python-2.7 pandas