我有两个数据框:
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)})
我将无法使用重命名功能,因为我有很多列。我想根据列的位置得出数字的差异。任何指针,以便我可以开始使用
答案 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