Python 如何组合列名和值
考虑一个df,比如:Python 如何组合列名和值,python,pandas,Python,Pandas,考虑一个df,比如: df = pd.DataFrame({'Fist_Name': ['John', 'Jack', 'Jimmy'], 'Last_Name': ['Black','Smith','Lee'], 'City': ['NY','Los Angeles','Boston'], 'Country': ['USA','US
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'
我建议保留
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]
通过将条目转换为
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
可以删除单引号(“”
),然后使用片段可以删除方括号(“{'
和“}”
)。一种方法是使用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
很高兴我学会了这个方法,但它特别需要我指定的格式,比如columname:value