Df包含由名称,性别和net_salary的字典组成的列。该词典有许多列及其对应的值。我需要将该字典转换为列形式。
index columns
9 {"name": "namo ", "gender": "MALE", "net_salary":...
10 {"name": "pappu", "gender": "MALE", "net_salary":...
11 {"name": "Deepak", "gender": "MALE", "net_sala...
12 {"name": "Arun", "gender": "MALE", "net_salary...
{}
我要以这种形式输出。
index name gender net_salary
9 namo MALE 151515
10 pappu MALE 151454
11 Deepak MALE 42512
12 Arun MALE 51654
答案 0 :(得分:1)
您需要首先对包含字典的列进行切片,然后为这些字典创建一个新的数据框。
columnsList = list(dframe["columns"])
sub_dframe = pd.DataFrame(columnsList)
result = pd.concat([dframe["index"],sub_dframe], axis=1)
答案 1 :(得分:0)
您需要:
df = pd.DataFrame({'columns': [{"name": "namo", "gender": "MALE", "net_salary":151515},
{"name": "pappu", "gender": "MALE", "net_salary":151454}]}, index=[9,10])
print(df['columns'].apply(pd.Series))
输出:
name gender net_salary
9 namo MALE 151515
10 pappu MALE 151454
答案 2 :(得分:0)
我会做这样的事情(python 3):
df["name"] = [*map(lambda x: x["name"],df["columns"])]
df["gender"] = [*map(lambda x: x["gender"],df["columns"])]
df["salary"] = [*map(lambda x: x["net_salary"],df["columns"])]
如果麻烦您可以删除原始列。
答案 3 :(得分:0)
解决方案可能是
pd.concat([df,df['columns'].apply(pd.Series)],axis=1).drop('columns',axis=1)