我正试图从我从json文件中读到的一组字典中创建一个熊猫数据。字典如下-
d1 = {"DisplayName": "Test_drive", "permissions": {"read": True, "read_acp": True, "write": True, "write_acp": True}}
d2= {"DisplayName": "Log delivery","URI": "http://test_drive.com/Logs", "permissions": {"read": False, "read_acp": True, "write": True, "write_acp": False}}我正试着把这些放进一只熊猫的资料里。当我试着用数据格式读它们的时候-
df = pd.DataFrame(d) **or** df = pd.DataFrame.from_dict(d)它产生这个-
DisplayName permissions
read Test_drive True
read_acp Test_drive True
write Test_drive True
write_acp Test_drive True或者把它读成-
df1 = pd.DataFrame(d).Transpose()它产生这个-
read read_acp write write_acp
DisplayName Test_drive Test_drive Test_drive Test_drive
permissions True True True True我正试着读这些字典,并把它们合并成一个数据集-
**DisplayName** **read** **read_acp** **write** **write_acp** URI
Test_drive True True True True NA
Log delivery False True True False http://test_drive.com/Logs有什么办法可以做到吗?
发布于 2020-01-31 16:00:08
谢谢Vishnudev和Max Power的帮助。我想下面的答案给了我我想要得到的确切数据。
d1 = {"DisplayName": "Test_drive", "permissions": {"read": True, "read_acp": True, "write": True, "write_acp": True}}
d2= {"DisplayName": "Log delivery","URI": "http://test_drive.com/Logs", "permissions": {"read": False, "read_acp": True, "write": True, "write_acp": False}}
df = pd.concat([pd.Series(d1),pd.Series(d2)], axis=1).transpose()
df = pd.concat([df.drop(['permissions'], axis=1),df['permissions'].apply(pd.Series)],axis=1)
**DisplayName URI read read_acp write write_acp**
0 Test_drive NaN True True True True
1 Log delivery http://test_drive.com/Logs False True True False发布于 2020-01-29 19:43:33
通过附加数据帧创建数据帧,然后使用透视对所需的结构进行整形。
df = pd.DataFrame.from_dict(d1).append(pd.DataFrame.from_dict(d2))
df.reset_index().pivot(index='DisplayName', columns='index', values='permissions')包含URI
>>> df.reset_index().pivot(index='DisplayName', columns='index', values=['permissions', 'URI'])
permissions URI
index read read_acp write write_acp read read_acp write write_acp
DisplayName
Log delivery False True True False http://test_drive.com/Logs http://test_drive.com/Logs http://test_drive.com/Logs http://test_drive.com/Logs
Test_drive True True True True NaN NaN NaN NaN发布于 2020-01-29 19:41:14
import pandas as pd
# Input Data
d1 = {"DisplayName": "Test_drive", "permissions": {"read": True, "read_acp": True, "write": True, "write_acp": True}}
d2= {"DisplayName": "Log delivery","URI": "http://test_drive.com/Logs", "permissions": {"read": False, "read_acp": True, "write": True, "write_acp": False}}
# Convert to DataFrame
dicts = [d1, d2]
df_rows = [pd.DataFrame(d) for d in dicts]
df = pd.concat(df_rows, axis=0).reset_index(drop=False)
# Reshape As Desired
tp1 = df.pivot(index='DisplayName', columns='index', values='permissions')
answer = tp1.merge(df[['DisplayName', 'URI']].drop_duplicates(),
how='left',
left_index=True,
right_on='DisplayName').set_index('DisplayName')输出:
>>> answer
read read_acp write write_acp URI
DisplayName
Log delivery False True True False http://test_drive.com/Logs
Test_drive True True True True NaNhttps://stackoverflow.com/questions/59974209
复制相似问题