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我已经编辑了