teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

一部修正

2021/07/17 23:36

投稿

toast-uz
toast-uz

スコア3266

answer CHANGED
@@ -1,5 +1,5 @@
1
1
  できます。
2
- ただし、`read_json`で`chunksize`を指定した場合、返ってくるのはDataFrameではなくジェネレータになりますので、ループで逐次に処理する必要があります。質問者様が言われるような重複削除をしたい場合は、以下のように実装します。
2
+ ただし、`read_json`で`chunksize`を指定した場合、返ってくるのはDataFrameではなくイテレータになりますので、ループで逐次に処理する必要があります。質問者様が言われるような重複削除をしたい場合は、以下のように実装します。
3
3
 
4
4
  ```Python
5
5
  import pandas as pd
@@ -18,8 +18,8 @@
18
18
 
19
19
  reader = pd.read_json('data.json', orient='records', lines=True, chunksize=4)
20
20
  df = pd.DataFrame() # Empty DataFrame
21
- for r in reader:
21
+ for chunk in reader:
22
- df = pd.concat([df, r])
22
+ df = pd.concat([df, chunk])
23
23
  df.drop_duplicates(inplace=True)
24
24
  print(df)
25
25
  # col1 col2
@@ -31,6 +31,7 @@
31
31
  #7 1 あ
32
32
  ```
33
33
 
34
- jsonではなくcsvの記事ですが、chunksizeを使っている記事がありますので、参考にしてください。
34
+ 参考: [Pandas公式ドキュメント - Line delimited json](https://pandas.pydata.org/pandas-docs/stable/user_guide/io.html#line-delimited-json)
35
35
 
36
- 参考: [pandas でメモリに乗らない 大容量ファイルを上手に扱う](https://sinhrks.hatenablog.com/entry/2014/11/21/231534)
36
+ 参考: [pandas でメモリに乗らない 大容量ファイルを上手に扱う](https://sinhrks.hatenablog.com/entry/2014/11/21/231534)
37
+ ※ JSONではなくCSVの記事です。

2

一部修正

2021/07/17 23:36

投稿

toast-uz
toast-uz

スコア3266

answer CHANGED
@@ -1,4 +1,5 @@
1
+ できます。
1
- できます。`read_json`で`chunksize`を指定した場合、返ってくるのはDataFrameではなくジェネレータになりますので、ループで処理する必要があります。質問者様が言われるような重複削除をしたい場合は、以下のように実装します。
2
+ ただし、`read_json`で`chunksize`を指定した場合、返ってくるのはDataFrameではなくジェネレータになりますので、ループで逐次に処理する必要があります。質問者様が言われるような重複削除をしたい場合は、以下のように実装します。
2
3
 
3
4
  ```Python
4
5
  import pandas as pd

1

一部修正

2021/07/17 23:29

投稿

toast-uz
toast-uz

スコア3266

answer CHANGED
@@ -16,7 +16,7 @@
16
16
  '''
17
17
 
18
18
  reader = pd.read_json('data.json', orient='records', lines=True, chunksize=4)
19
- df = pd.DataFrame([])
19
+ df = pd.DataFrame() # Empty DataFrame
20
20
  for r in reader:
21
21
  df = pd.concat([df, r])
22
22
  df.drop_duplicates(inplace=True)