我有一张表(大约14,000行或100行左右),顺序不能更改。每行都由许多列组成唯一,下面我将对其进行简化。
假设我们有下表,我需要创建一个新列,该列采用共享相同Col2 / Col3(但按列1唯一)的行之间的差异。理想情况下,我不想触及此命令。
注意:实际上,有7个变量将完全匹配,而有1个变量将剩下两个。 即组合变量为2-A-A-A-A-A-A-A / 5-A-A-A-A-A-A-A-A。当前7个变量相同时,总是只剩下2个,我正在比较这两个变量。
谢谢!
Col1 Col2 Col3 Percentage
2 A X 5%
2 B Y 4%
2 C Z 3%
5 A X 2%
5 B Y 1%
5 C Z 5%
Desired:
Col1 Col2 Col3 Percentage Difference
2 A X 5% 3% (*note: matches A/X to get 5%-2%=3%)
2 B Y 4% 3%
2 C Z 3% -2%
5 A X 2% 3%
5 B Y 1% 3%
5 C Z 5% -2%
答案 0 :(得分:0)
我已经解决了这个问题,但是我相信效率低下!
我创建了一个新的数据框
df2 = df[['Col1','Col2','Co3','Percentgage']]
在df2中创建一个新列,该列是第1列的镜像(即,如果2 = 5,如果5 = 2)
df2['opposite_col1'] = np.where(df2['Col1']==2,5,2)
删除了原始列1,并将新列重命名为列1
df2.drop('Col1',axis=1)
df2.columns = ['Col2,'Col3','Mirror_Percentgage','Col1']
这看起来像这样(注意,与表1相同,只是col1被镜像了)。
Col1 Col2 Col3 Mirror_Percentage
5 A X 5%
5 B Y 4%
5 C Z 3%
2 A X 2%
2 B Y 1%
2 C Z 5%
然后只需将df合并到Col1,Col2,Col3上-剩下的就是原始表,除了'Mirror_Percentgage'的附加列。
然后我创建一个新列来查找页边距:
df['Mirror_margin'] = df['Percentgage'] - df['Mirror_Percentgage']