【问题标题】:Change dataframe columns if column name exist in other dataframe, Python 3.6如果列名存在于其他数据框中,则更改数据框列,Python 3.6
【发布时间】:2017-09-19 15:28:28
【问题描述】:

我有一个主数据框 (DF),其中包含以下列和数据

C   D   E   F   G   H   I   J   K   L   QC
254 95  0   34543   43  32  4   4   4   4   Q23
255 59  1   43  tre     r5  54  567 564 Q23
256 50  7   65      76557   65  65  5   5   Q23

并且,将数据框(MDF)映射到下面的列

QC  Res1    Res2    Res3    Res4    Res5    Res6    Res7    Res8    Res9    Res10
Q23 US  CH  JP  CE  OV  NON DK  TOT N   KK
Q24 US  ZZ  JP  ME  KP  NON DK  TOT E   LK

这里,两个数据框中的 QC 列都用于映射。

我想用 MDF['QC']=DF[Q23] 映射来替换 DF 列

两个数据框中的顺序相同。我总共有 500 个数据框,我想用另一个数据框中的新列更新所有数据框列。

最终预期数据帧:DF

US      CH  JP  CE  OV  NON DK  TOT N   KK  QC
254 95  0   34543   43  32  4   4   4   4   Q23
255 59  1   43  tre     r5  54  567 564 Q23
256 50  7   65      76557   65  65  5   5   Q23

这真的很有挑战性。

【问题讨论】:

  • 你只有一个数据框还是数据框列表?
  • @Bharath shetty,共有 343 个数据集。
  • 每个数据集的列的 QC 值是否相同
  • 是的,QC值在同一个数据集中是相同的,但在每个数据集中是不同的
  • 我更新了我的答案希望它有所帮助。

标签: python python-3.x pandas dataframe


【解决方案1】:

您可以通过选择包含'QC'值的行来使用np.append,即

如果你有像

这样的数据框 打印(df1) C D E F G H I J K L QC 0 254 95 0 34543 43 32.0 4 4 4 4 Q23 1 255 59 1 43 tre NaN r5 54 567 564 Q23 2 256 50 7 65 NaN 76557.0 65 65 5 5 Q23 打印(df2) C D E F G H I J K L QC 0 254 95 0 34543 43 32.0 4 4 4 4 Q24 1 255 59 1 43 tre NaN r5 54 567 564 Q24 2 256 50 7 65 NaN 76557.0 65 65 5 5 Q24

然后分配列的 for 循环将帮助您,即

for i in [df1,df2]:
    q = i['QC'].unique()[0]
    i.columns = np.append(mdf[mdf['QC'] == q].values[0][1:],['QC'])

print([df1,df2]
[ 美国 CH JP CE OV NON DK TOT N KK QC 0 254 95 0 34543 43 32.0 4 4 4 4 Q23 1 255 59 1 43 tre NaN r5 54 567 564 Q23 2 256 50 7 65 NaN 76557.0 65 65 5 5 Q23, US ZZ JP ME KP NON DK TOT E LK QC 0 254 95 0 34543 43 32.0 4 4 4 4 Q24 1 255 59 1 43 tre NaN r5 54 567 564 Q24 2 256 50 7 65 NaN 76557.0 65 65 5 5 Q24]

【讨论】:

    猜你喜欢
    • 2020-02-18
    • 2017-06-23
    • 2018-09-06
    • 2018-02-23
    • 2022-07-11
    • 2021-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多