我有一个pandas
数据帧。我在多个列上调用了set_index
方法。
你能帮我构建同样的数据框架吗?
raw_data = {'first_name': ['Jason', 'Molly'],
'last_name': ['Miller', 'Jacobson'],
'age': [42, 52, ]
'preTestScore': [4, 24],
'postTestScore': [25, 94]}
df = pd.DataFrame(raw_data, columns = ['first_name', 'last_name', 'age', 'preTestScore', 'postTestScore'])
df1 = df.set_index(['first_name','last_name','age'])
那么将有四列。第一个是索引列,其他是pretestScore和postTestScore
first_name-second_name-age preTestScore postTestScore
Jason
Miller
42
4 25
Molly
Jacob
52
24 94
发布于 2018-07-29 19:23:29
据我所知,你希望索引是这些列的组合,但又希望它出现在一列中,对于这一列,没有我搜索过的pandas函数。自定义构建方式如下所示:
import pandas as pd
raw_data = {'first_name': ['Jason', 'Molly'],
'last_name': ['Miller', 'Jacobson'],
'age': [42, 52, ],
'preTestScore': [4, 24],
'postTestScore': [25, 94]}
df = pd.DataFrame.from_dict(raw_data)
df['first_name-last_name-age'] = df.apply(lambda row: row['first_name']+' '+ row['last_name']+' '+str(row['age']), axis=1)
df = df.set_index(['first_name-last_name-age'])
df = df.drop('first_name', axis=1)
df = df.drop('last_name', axis=1)
df = df.drop('age', axis=1)
df = df.reset_index()
print (df)
以上输出结果与您的预期一致:
first_name-last_name-age postTestScore preTestScore
0 Jason Miller 42 25 4
1 Molly Jacobson 52 94 24
希望这能有所帮助!
https://stackoverflow.com/questions/51577679
复制相似问题