вытащить 2 столбца из файла json в кадр данных pandas

avatar
user16133525
1 июля 2021 в 20:59
45
2
0
    {"id": 814984317021495298, "date": "2016-12-30", "time": "18:59:37", "timezone": 
    "-0400", "replies_count": 7708, "username": "im_theantitrump"}
    {"id": 814984316195311616, "date": "2016-12-30", "time": "18:59:37", "timezone": 
    "-0400", "replies_count": 25772, "username": "bishyoucray2"}
    

Мой файл json выглядит так. Как создать кадр данных pandas с «датой» и «количеством ответов» без дубликатов и в порядке возрастания даты? Мой текущий код отбрасывает одно из имен заголовков и сортирует даты смешивания. df['дата'].value_counts()

Источник
Henry Ecker
1 июля 2021 в 21:18
0

Каков ваш ожидаемый результат для этих двух записей?

Ответы (2)

avatar
Henry Ecker
1 июля 2021 в 21:05
1

Используйте pd.read_json с lines=True, затем выберите нужные столбцы:

df = pd.read_json('test.json', lines=True)[['date', 'replies_count']]

df:

        date  replies_count
0 2016-12-30           7708
1 2016-12-30          25772

test.json:

 {"id": 814984317021495298, "date": "2016-12-30", "time": "18:59:37", "timezone": "-0400", "replies_count": 7708, "username": "im_theantitrump"}
 {"id": 814984316195311616, "date": "2016-12-30", "time": "18:59:37", "timezone": "-0400", "replies_count": 25772, "username": "bishyoucray2"}
Corralien
1 июля 2021 в 21:08
1

Я только что узнал json_normalize, что забыл read_json :-) лол +1 (и gg за твои 15к)

Henry Ecker
1 июля 2021 в 21:10
0

Спасибо ... Я не уверен, правильно ли это, поскольку есть «без дубликатов и в порядке возрастания дат?» часть, которую этот ответ не касается, но я не знаю. Спасибо и за это (также поздравляю с 5, 6 и 7k)!

Corralien
1 июля 2021 в 21:16
0

Может быть, вы можете добавить .groupby('date').sum().sort_index(ascending=True)

avatar
Corralien
1 июля 2021 в 21:02
1

Использовать json_normalize:

# records = json.load(open('data.json'))
>>> records
[
  {"id": 814984317021495298, "date": "2016-12-30", "time": "18:59:37", "timezone": 
    "-0400", "replies_count": 7708, "username": "im_theantitrump"},
  {"id": 814984316195311616, "date": "2016-12-30", "time": "18:59:37", "timezone": 
    "-0400", "replies_count": 25772, "username": "bishyoucray2"}
]


# Simple extraction of the 2 columns
>>> pd.json_normalize(records)[['date', 'replies_count']]

         date  replies_count
0  2016-12-30           7708
1  2016-12-30          25772


# Without duplicates and ascending sort dates
>>> pd.json_normalize(records)[['date', 'replies_count']] \
      .groupby('date').sum().sort_index(ascending=True)

            replies_count
date
2016-12-30          33480