根据列位置从两个数据框中获取数字的百分比变化

时间:2018-12-03 07:10:01

标签: python python-3.x pandas dataframe

我有两个数据框:

df1=pd.DataFrame({'Product':("A","B","C"),"Data":(1,2,3)})
df2=pd.DataFrame({'Product':("A","B","C"),"Data":(2,4,6)})

我想获取列的百分比变化数。

我尝试了以下代码:

data1_i=df1.set_index(["Product"])

data2_i=df2.set_index(["Product"])

data_diff=(data2_i-data1_i)/data1_i*100
data_diff.reset_index(inplace=True)

获得的输出:

    Product Data
0   A   100.0
1   B   100.0
2   C   100.0

由于列名相同,因此我能够执行此操作。如果我有如下不同的列名,如何获取变体:

df1=pd.DataFrame({'Product':("A","B","C"),"Data":(1,2,3)})
df2=pd.DataFrame({'Product':("A","B","C"),"Data_new":(2,4,6)})

我将无法使用重命名功能,因为我有很多列。我想根据列的位置得出数字的差异。任何指针,以便我可以开始使用

1 个答案:

答案 0 :(得分:1)

您可以使用iloc按位置选择列:

df1=pd.DataFrame({'Product':("A","B","C"),"Data":(1,2,3)})
df2=pd.DataFrame({'Product':("A","B","C"),"Data_new":(2,4,6)})
data1_i=df1.set_index(["Product"])
data2_i=df2.set_index(["Product"])

data_diff=(data2_i.iloc[:, 0]-data1_i.iloc[:, 0])/data1_i.iloc[:, 0]*100
data_diff = data_diff.reset_index(name='Data')
print (data_diff)
  Product   Data
0       A  100.0
1       B  100.0
2       C  100.0