如何组合列名和值

2024-05-29 02:29:17 发布

您现在位置:Python中文网/ 问答频道 /正文

考虑一个df,比如:

df = pd.DataFrame({'Fist_Name':  ['John', 'Jack', 'Jimmy'],
                           'Last_Name': ['Black','Smith','Lee'],
                           'City': ['NY','Los Angeles','Boston'],
                           'Country': ['USA','USA','USA']})

我想创建一个新列,其中包含列名称和它前面所有行的值

新列输出的第一行类似于:

'Fist_Name: John, Last_Name: Black, City: NY, Country: USA'

Tags: namecitydataframedfjohncountrypdlast
3条回答

一种方法是使用join连接列

import pandas as pd
df = pd.DataFrame({'Fist_Name':  ['John', 'Jack', 'Jimmy'],
                           'Last_Name': ['Black','Smith','Lee'],
                           'City': ['NY','Los Angeles','Boston'],
                           'Country': ['USA','USA','USA']})

print (df)
def address(x):
   return ', '.join([col + ': ' + x[col] for col in df.columns])

df['new'] = df.apply(address, axis = 1)

print (df['new'])

其输出将为:

  Fist_Name Last_Name         City Country
0      John     Black           NY     USA
1      Jack     Smith  Los Angeles     USA
2     Jimmy       Lee       Boston     USA

0    Fist_Name: John, Last_Name: Black, City: NY, Country: USA         
1    Fist_Name: Jack, Last_Name: Smith, City: Los Angeles, Country: USA
2    Fist_Name: Jimmy, Last_Name: Lee, City: Boston, Country: USA      

通过将条目转换为str,可以使用列表理解操作^{}的输出:

df['new'] = [str(row).replace("'","")[1:-1] for row in df.to_dict('r')]

print(df['new'][0])
#'Fist_Name: John, Last_Name: Black, City: NY, Country: USA'

通过使用str.replace可以删除单引号("'"),然后,通过切片可以删除方括号('{''}'

我建议保留dict类型

df['new'] = df.to_dict('r')
df
  Fist_Name  ...                                                new
0      John  ...  {'Fist_Name': 'John', 'Last_Name': 'Black', 'C...
1      Jack  ...  {'Fist_Name': 'Jack', 'Last_Name': 'Smith', 'C...
2     Jimmy  ...  {'Fist_Name': 'Jimmy', 'Last_Name': 'Lee', 'Ci...
[3 rows x 5 columns]

相关问题 更多 >

    热门问题