当前位置: 首页 > 知识库问答 >
问题:

使用DF上的一行作为另一个DF中的新列名

钱展
2023-03-14

我想用另一个DF的行中的名称替换DF的一些列名称

import pandas as pd
df1=pd.DataFrame({'T2': [2,3],
          'T1': [4,5],
          'HO': [2,7]
          })

df2=pd.DataFrame({'T1' : ['cat'],
            'T2' :['dog']  
           })

如何用df2中的“狗”和“猫”替换df1中的“T1”和“T2”?

共有3个答案

曹泉
2023-03-14

您可以使用映射:

 def mapping(x):
    return df2[x] if x in df2 else x

df1.columns=list(map(mapping, list(df1.columns)))

print(df1)

   dog  cat  HO
0    2    4   2
1    3    5   7
闻人英韶
2023-03-14

您可以将df2转换为使用df.to_dict将列名映射到行值的判决,然后使用判决使用df.rename.重命名列。

In [4]: df1 
Out[4]: 
   HO  T1  T2
0   2   4   2
1   7   5   3

In [5]: df2 
Out[5]: 
    T1   T2
0  cat  dog

In [6]: df2.to_dict(orient="records")
Out[6]: [{'T1': 'cat', 'T2': 'dog'}]

In [7]: df1.rename(columns=df2.to_dict(orient="records")[0])
Out[7]: 
   HO  cat  dog
0   2    4    2
1   7    5    3
莫英喆
2023-03-14

您也可以使用更简单的方法

print df2.iloc[0]

T1    cat
T2    dog
Name: 0, dtype: object

Solution:
df1 = df1.rename(columns=df2.iloc[0])

print df1
   HO  cat  dog
 0   2    4    2
 1   7    5    3
 类似资料:
  • 我有一个excel文件,看起来像这样: Header3包含如下所示的JSON字符串 我想解析JSON Header3列,并为每个键创建一个列,其中键的名称附加有键2的值,整个文件中的键始终相同。 结束数据帧应如下所示: 实例: 需要成为: 在进入花哨的东西之前,我试图至少规范化数据,但我得到了一个空序列。

  • 我有这个df称为职位: 我有一份清单: 我正在尝试在股票行情器上创建一个新的DF排序。如果代码相同,那么这些值将进入df,另一个值将进入另一个。 我刚刚尝试过如何做到这一点,我不确定我是否走上了正确的道路。。 这怎么可能呢?在新的DF中,我想带上所有的专栏。 谢谢:)

  • 感兴趣的是在同一pyspark数据帧中将列表的这一列拆分为多列的scala-spark实现 给定该数据帧: 我想要一个新的数据帧,它包含分解值并映射到我提供的列名称: 尝试: 但它的格式错误,我不知道如何映射到我的 colNames 列表: 在上面的链接中,python的解决方案是使用列表理解: 但它没有显示如何使用提供的列名列表,因为列名只是列的索引。

  • 例如,假设我有一个 我有条件: 我如何测试条件并为我的df的每一行返回一个结果,如下面所示? 编辑:理想情况下,我想创建一个,允许我 并计算所有行的数据。因为在实际数据中,有100个条件语句和10个列。

  • 我有两个不同形状的df。一个包含单词及其频率,另一个包含单词及其引理。 第一个df总是将一个单词映射到一个频率,第二个df将许多单词映射到一个引理(多次)。例如: DF1: 和df2: 我想将引理信息添加到,通过搜索的每个单词,将其与中的单词进行比较,并从中提取引理信息以将其添加回。 对于df1中的值是否始终相同,有一些有用的答案,但由于我想对每一行中包含不同单词的行执行此操作,因此我不确定如何继

  • 我有以下,其值是字典: 我希望获得所需的输出: 我怎样才能把字典分成单独的列呢? 我见过使用函数拆分字符串的列,但不确定如何将其应用于字典作为值的情况。