Python 基于列定位从两个数据帧获取数字的百分比变化

Python 基于列定位从两个数据帧获取数字的百分比变化,python,python-3.x,pandas,dataframe,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)

我有两个数据帧:

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)})

我将无法使用重命名函数,因为我有很多列。我想获得基于列定位的数字变化。任何指针,以便我可以开始

您可以使用以下命令按位置选择列:


有什么问题需要解决吗?@jezarel,谢谢。但是,如果一列的数字有变化,它就可以工作,在这种情况下,您可以使用reset_索引。它给出:TypeError:如果我有多个列,则无法在序列上重置索引以创建数据帧使用
data\u diff=data\u diff.reset\u index()
data\u diff=data\u diff.reset\u index(name='data')
仅处理一列
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