我有一个字典data
,其结构如下:
{
1: {
'title': 'Test x Miss LaFamilia - All Mine [Music Video] | Link Up TV',
'time': '2020-06-28T18:30:06Z',
'channel': 'Link Up TV',
'description': 'SUB & ENABLE NOTIFICATIONS for more: Visit our clothing store: Visit our website for the latest videos: ...',
'url': 'youtube',
'region_searched': 'US',
'time_searched': datetime.datetime(2020, 8, 6, 13, 6, 5, 188727, tzinfo = < UTC > )
},
2: {
'title': 'Day 1 Highlights | England Frustrated by Rain as Babar Impresses | England v Pakistan 1st Test 2020',
'time': '2020-08-05T18:29:43Z',
'channel': 'England & Wales Cricket Board',
'description': 'Watch match highlights of Day 1 from the 1st Test between England and Pakistan at Old Trafford. Find out more at ecb.co.uk This is the official channel of the ...',
'url': 'youtube',
'region_searched': 'US',
'time_searched': datetime.datetime(2020, 8, 6, 13, 6, 5, 188750, tzinfo = < UTC > )
}
我正在尝试制作一个看起来像这样的pandas DataFrame:
rank title time channel description url region_searched time_searched
1 Test x Miss LaFamilia... 2020-06-28T18:30:06Z Link Up TV SUB & ENABLE NOTIFICATIONS for more... youtube.com US 2020-8-6 13:06:05
2 Day 1 Highlights | E... 2020-08-05T18:29:43 England & .. Watch match highlights of D youtube.com US 2020-8-6 13:06:05
在我的data
字典中,每个key
应该是我的rank
中的DataFrame
条目,父key
中的每个key
是列名称为key
,其值为value
所保存的key
的条目。
当我简单地跑步时:
df = pd.DataFrame(data)
df看起来像这样:
1 2
title Test x Miss LaFamilia - All Mine [Music Video]... Day 1 Highlights | England Frustrated by Rain ...
time 2020-06-28T18:30:06Z 2020-08-05T18:29:43Z
channel Link Up TV England & Wales Cricket Board
description SUB & ENABLE NOTIFICATIONS for more: http://go... Watch match highlights of Day 1 from the 1st T...
url youtube.com/watch?v=YB3xASruJHE youtube.com/watch?v=xABoyLxWc7c
region_searched US US
time_searched 2020-08-06 2020-08-06
我感觉好像没有几条聪明的枢纽线远离我的需要,但我不知道如何以一种聪明的方式实现我需要的结构。
答案 0 :(得分:4)
可以按照注释中提到的@dm2的方式以更简单的方式进行操作。这里的d
是具有数据的字典
df=pd.DataFrame(d)
dfz=df.T
要创建rank
列
dfz['rank']=dfz.index
答案 1 :(得分:2)
尝试一下
import pandas as pd
pd.DataFrame(data.values()).assign(rank = data.keys())
title ... rank
0 Test x Miss LaFamilia - All Mine [Music Video]... ... 1
1 Day 1 Highlights | England Frustrated by Rain ... ... 2
答案 2 :(得分:1)
如果您希望索引和排名成为两个不同的列
df = pd.DataFrame(data.values())
df['rank'] = data.keys()
OR
要在一行中使用assign
方法
df = pd.DataFrame(data.values()).assign(rank = data.keys())
如果您希望索引和排名在同一列
df = pd.DataFrame(data).T
df.index.names = ['rank']
应该可以。
答案 3 :(得分:0)
尝试遍历dict键并为每个值附加一个新的df。 (将对象“ dict”替换为变量)
df_full = pd.DataFrame()
for key in dict.keys():
df_temp = pd.DataFrame(dict[key])
df_full = pd.concat([df_full, df_temp], axis=0)