Python 使用动态列名处理concat中的列名

Python 使用动态列名处理concat中的列名,python,pandas,Python,Pandas,我想连接两个数据帧。它们有相同的索引。每次运行脚本时,列名都可以更改 我发现下面的代码更接近正确答案,但它不能处理更改列标签b可能是任何内容 pd.concat([df1,df2.rename(columns={'b':'a'})], ignore_index=True) 如有任何贡献,将不胜感激 编辑: 输入数据: 第一数据帧: 2020-02-03 2020-02-04 2020-02-05 2020-02-06 ap

我想连接两个数据帧。它们有相同的索引。每次运行脚本时,列名都可以更改

我发现下面的代码更接近正确答案,但它不能处理更改列标签
b
可能是任何内容

pd.concat([df1,df2.rename(columns={'b':'a'})], ignore_index=True)
如有任何贡献,将不胜感激

编辑:

输入数据:

第一数据帧:

                          2020-02-03     2020-02-04   2020-02-05     2020-02-06
app_vendor_id currency                              
3             BCH           57.389609      57.389609   57.389609      57.389609
              BSV            0.002577       0.002577   0.002577       0.002577
              BTC          162.589959     162.589959   162.589959     162.589959
              BTG            0.010000       0.010000   0.010000       0.010000
                          2020-02-07     2020-02-08   2020-02-09     2020-02-10
app_vendor_id currency                              
3             BCH           57.389609      57.389609   57.389609      57.389609
              BSV            0.002577       0.002577   0.002577       0.002577
              BTC          162.589959     162.589959   162.589959     162.589959
              BTG            0.010000       0.010000   0.010000       0.010000
                          2020-02-03     2020-02-10
app_vendor_id currency                              
3             BCH           57.389609      57.389609
              BSV            0.002577       0.002577
              BTC          162.589959     162.589959
              BTG            0.010000       0.010000
第二数据帧:

                          2020-02-03     2020-02-04   2020-02-05     2020-02-06
app_vendor_id currency                              
3             BCH           57.389609      57.389609   57.389609      57.389609
              BSV            0.002577       0.002577   0.002577       0.002577
              BTC          162.589959     162.589959   162.589959     162.589959
              BTG            0.010000       0.010000   0.010000       0.010000
                          2020-02-07     2020-02-08   2020-02-09     2020-02-10
app_vendor_id currency                              
3             BCH           57.389609      57.389609   57.389609      57.389609
              BSV            0.002577       0.002577   0.002577       0.002577
              BTC          162.589959     162.589959   162.589959     162.589959
              BTG            0.010000       0.010000   0.010000       0.010000
                          2020-02-03     2020-02-10
app_vendor_id currency                              
3             BCH           57.389609      57.389609
              BSV            0.002577       0.002577
              BTC          162.589959     162.589959
              BTG            0.010000       0.010000
预期输出(第一个数据帧的第一列和第二个数据帧的最后一列):

问题是每次运行脚本时,脚本列标签(日期)都会更改。

您可以尝试:

new_df=df_after_concat.iloc[:, [0,-1]] 
您可以尝试:

new_df=df_after_concat.iloc[:, [0,-1]] 
用于轴=1的
concat
之前的第一列和最后一列:

df = pd.concat([df1.iloc[:, 0],df2.iloc[:, -1]], axis=1)
print (df)
                        2020-02-03  2020-02-10
app_vendor_id currency                        
3             BCH        57.389609   57.389609
              BSV         0.002577    0.002577
              BTC       162.589959  162.589959
              BTG         0.010000    0.010000
如果要重命名某些列,例如,从第一个df到第二个df的最后一列,最后一列:

d = {df1.columns[-1]:df2.columns[-1]}
print (d)
{'2020-02-06': '2020-02-10'}

df = df1.iloc[:, [0, -1]].rename(columns=d)
print (df)
                        2020-02-03  2020-02-10
app_vendor_id currency                        
3             BCH        57.389609   57.389609
              BSV         0.002577    0.002577
              BTC       162.589959  162.589959
              BTG         0.010000    0.010000
如果要将df1中的所有列重命名为df2.columns(列的长度相同):

用于轴=1的
concat
之前的第一列和最后一列:

df = pd.concat([df1.iloc[:, 0],df2.iloc[:, -1]], axis=1)
print (df)
                        2020-02-03  2020-02-10
app_vendor_id currency                        
3             BCH        57.389609   57.389609
              BSV         0.002577    0.002577
              BTC       162.589959  162.589959
              BTG         0.010000    0.010000
如果要重命名某些列,例如,从第一个df到第二个df的最后一列,最后一列:

d = {df1.columns[-1]:df2.columns[-1]}
print (d)
{'2020-02-06': '2020-02-10'}

df = df1.iloc[:, [0, -1]].rename(columns=d)
print (df)
                        2020-02-03  2020-02-10
app_vendor_id currency                        
3             BCH        57.389609   57.389609
              BSV         0.002577    0.002577
              BTC       162.589959  162.589959
              BTG         0.010000    0.010000
如果要将df1中的所有列重命名为df2.columns(列的长度相同):


我不确定我是否理解你想做什么,你能详细说明吗?为了清楚起见,你能展示一些示例数据和结果吗?@AMC我已经编辑了我不确定我是否理解你想做什么,你能详细说明吗?为了清楚起见,你能展示一些示例数据和结果吗?@AMC我已经编辑了