回答編集履歴

2

2024/08/15 11:11

投稿

melian
melian

スコア20530

test CHANGED
@@ -52,8 +52,9 @@
52
52
  'c':[10,11,np.nan,np.nan,None],'d':[15,16,17,None,19],
53
53
  'e':[np.nan,np.nan,np.nan,np.nan,np.nan]})
54
54
 
55
- dic = {f'{k}-{i}': None if np.isnan(v) else v
55
+ dic = {f'{k}-{i}': v
56
- for i, d in enumerate(df.to_dict(orient='records')) for k, v in d.items()}
56
+ for i, d in enumerate(df.replace({np.nan: None}).to_dict(orient='records'))
57
+ for k, v in d.items()}
57
58
  print(json.dumps(dic,indent=4))
58
59
  ```
59
60
 

1

2024/08/15 11:07

投稿

melian
melian

スコア20530

test CHANGED
@@ -40,3 +40,20 @@
40
40
  # }
41
41
  ```
42
42
 
43
+ ### 追記
44
+
45
+ `pandas.DataFrame.to_dict()` と辞書内包表記(dictionary comprehension) を使用して以下の様にも書くことができます。
46
+ ```python
47
+ import pandas as pd
48
+ import numpy as np
49
+ import json
50
+
51
+ df=pd.DataFrame({'a':[0,1,2,3,4],'b':[None,6,7,8,np.nan],
52
+ 'c':[10,11,np.nan,np.nan,None],'d':[15,16,17,None,19],
53
+ 'e':[np.nan,np.nan,np.nan,np.nan,np.nan]})
54
+
55
+ dic = {f'{k}-{i}': None if np.isnan(v) else v
56
+ for i, d in enumerate(df.to_dict(orient='records')) for k, v in d.items()}
57
+ print(json.dumps(dic,indent=4))
58
+ ```
59
+