检查数据框中的单元格是否为NaN,如果是,则迭代到下一个单元格



我有一个嵌套的数据框架,我需要explode().

我想象的代码是这样的?如果可能的话,我希望避免在代码中使用显式列名,因为如果列名更改,代码将中断。

for i in range(len(df.columns)):
if df.isnull(df.iloc[:, [i]]):
pass
else:
df.iloc[:, [i]].apply(pd.Series)

这是我的数据框架:

{
"Segment": {
"CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect": np.nan,
"CommonStockCapitalSharesReservedForFutureIssuance": np.nan,
"CommonStockParOrStatedValuePerShare": np.nan,
"CommonStockSharesAuthorized": np.nan,
"CommonStockSharesIssued": np.nan,
"CommonStockSharesOutstanding": np.nan
},
"USD": {
"CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect": [
{
"accn": "0000950170-22-002008",
"end": "2019-12-31",
"filed": "2022-02-24",
"form": "10-K",
"fp": "FY",
"frame": "CY2019",
"fy": 2021,
"start": "2019-01-01",
"val": -19846000
},
{
"accn": "0000950170-21-000956",
"end": "2020-06-30",
"filed": "2021-08-05",
"form": "10-Q",
"fp": "Q2",
"fy": 2021,
"start": "2020-01-01",
"val": 9247000
},
{
"accn": "0000950170-21-003110",
"end": "2020-09-30",
"filed": "2021-11-04",
"form": "10-Q",
"fp": "Q3",
"fy": 2021,
"start": "2020-01-01",
"val": 33446000
},
{
"accn": "0000950170-22-002008",
"end": "2020-12-31",
"filed": "2022-02-24",
"form": "10-K",
"fp": "FY",
"frame": "CY2020",
"fy": 2021,
"start": "2020-01-01",
"val": 17835000
},
{
"accn": "0000950170-22-007876",
"end": "2021-03-31",
"filed": "2022-05-05",
"form": "10-Q",
"fp": "Q1",
"frame": "CY2021Q1",
"fy": 2022,
"start": "2021-01-01",
"val": 7308000
},
{
"accn": "0000950170-21-000956",
"end": "2021-06-30",
"filed": "2021-08-05",
"form": "10-Q",
"fp": "Q2",
"fy": 2021,
"start": "2021-01-01",
"val": 823291000
},
{
"accn": "0000950170-21-003110",
"end": "2021-09-30",
"filed": "2021-11-04",
"form": "10-Q",
"fp": "Q3",
"fy": 2021,
"start": "2021-01-01",
"val": 545641000
},
{
"accn": "0000950170-22-002008",
"end": "2021-12-31",
"filed": "2022-02-24",
"form": "10-K",
"fp": "FY",
"frame": "CY2021",
"fy": 2021,
"start": "2021-01-01",
"val": 1338876000
},
{
"accn": "0000950170-22-007876",
"end": "2022-03-31",
"filed": "2022-05-05",
"form": "10-Q",
"fp": "Q1",
"frame": "CY2022Q1",
"fy": 2022,
"start": "2022-01-01",
"val": -328343000
}
],
"CommonStockCapitalSharesReservedForFutureIssuance": np.nan,
"CommonStockParOrStatedValuePerShare": np.nan,
"CommonStockSharesAuthorized": np.nan,
"CommonStockSharesIssued": np.nan,
"CommonStockSharesOutstanding": np.nan
},
"USD/shares": {
"CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect": np.nan,
"CommonStockCapitalSharesReservedForFutureIssuance": np.nan,
"CommonStockParOrStatedValuePerShare": [
{
"accn": "0000950170-21-000956",
"end": "2020-12-31",
"filed": "2021-08-05",
"form": "10-Q",
"fp": "Q2",
"fy": 2021,
"val": 1e-05
},
{
"accn": "0000950170-21-003110",
"end": "2020-12-31",
"filed": "2021-11-04",
"form": "10-Q",
"fp": "Q3",
"fy": 2021,
"val": 1e-05
},
{
"accn": "0000950170-22-002008",
"end": "2020-12-31",
"filed": "2022-02-24",
"form": "10-K",
"fp": "FY",
"frame": "CY2020Q4I",
"fy": 2021,
"val": 1e-05
},
{
"accn": "0000950170-21-000956",
"end": "2021-06-30",
"filed": "2021-08-05",
"form": "10-Q",
"fp": "Q2",
"frame": "CY2021Q2I",
"fy": 2021,
"val": 1e-05
},
{
"accn": "0000950170-21-003110",
"end": "2021-09-30",
"filed": "2021-11-04",
"form": "10-Q",
"fp": "Q3",
"frame": "CY2021Q3I",
"fy": 2021,
"val": 1e-05
},
{
"accn": "0000950170-22-002008",
"end": "2021-12-31",
"filed": "2022-02-24",
"form": "10-K",
"fp": "FY",
"frame": "CY2021Q4I",
"fy": 2021,
"val": 1e-05
}
],
"CommonStockSharesAuthorized": np.nan,
"CommonStockSharesIssued": np.nan,
"CommonStockSharesOutstanding": np.nan
},
"pure": {
"CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect": np.nan,
"CommonStockCapitalSharesReservedForFutureIssuance": np.nan,
"CommonStockParOrStatedValuePerShare": np.nan,
"CommonStockSharesAuthorized": np.nan,
"CommonStockSharesIssued": np.nan,
"CommonStockSharesOutstanding": np.nan
},
"shares": {
"CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect": np.nan,
"CommonStockCapitalSharesReservedForFutureIssuance": [
{
"accn": "0000950170-21-000956",
"end": "2020-12-31",
"filed": "2021-08-05",
"form": "10-Q",
"fp": "Q2",
"fy": 2021,
"val": 191849299
},
{
"accn": "0000950170-21-003110",
"end": "2020-12-31",
"filed": "2021-11-04",
"form": "10-Q",
"fp": "Q3",
"fy": 2021,
"val": 191849299
},
{
"accn": "0000950170-22-002008",
"end": "2020-12-31",
"filed": "2022-02-24",
"form": "10-K",
"fp": "FY",
"frame": "CY2020Q4I",
"fy": 2021,
"val": 191849299
},
{
"accn": "0000950170-21-000956",
"end": "2021-06-30",
"filed": "2021-08-05",
"form": "10-Q",
"fp": "Q2",
"frame": "CY2021Q2I",
"fy": 2021,
"val": 118286387
},
{
"accn": "0000950170-21-003110",
"end": "2021-09-30",
"filed": "2021-11-04",
"form": "10-Q",
"fp": "Q3",
"frame": "CY2021Q3I",
"fy": 2021,
"val": 113722500
},
{
"accn": "0000950170-22-002008",
"end": "2021-12-31",
"filed": "2022-02-24",
"form": "10-K",
"fp": "FY",
"fy": 2021,
"val": 106320711
},
{
"accn": "0000950170-22-007876",
"end": "2021-12-31",
"filed": "2022-05-05",
"form": "10-Q",
"fp": "Q1",
"frame": "CY2021Q4I",
"fy": 2022,
"val": 106320711
},
{
"accn": "0000950170-22-007876",
"end": "2022-03-31",
"filed": "2022-05-05",
"form": "10-Q",
"fp": "Q1",
"frame": "CY2022Q1I",
"fy": 2022,
"val": 116393943
}
],
"CommonStockParOrStatedValuePerShare": np.nan,
"CommonStockSharesAuthorized": [
{
"accn": "0000950170-21-000956",
"end": "2020-12-31",
"filed": "2021-08-05",
"form": "10-Q",
"fp": "Q2",
"fy": 2021,
"val": 323000000
},
{
"accn": "0000950170-21-003110",
"end": "2020-12-31",
"filed": "2021-11-04",
"form": "10-Q",
"fp": "Q3",
"fy": 2021,
"val": 323000000
},
{
"accn": "0000950170-22-002008",
"end": "2020-12-31",
"filed": "2022-02-24",
"form": "10-K",
"fp": "FY",
"frame": "CY2020Q4I",
"fy": 2021,
"val": 323000000
},
{
"accn": "0000950170-21-000956",
"end": "2021-06-30",
"filed": "2021-08-05",
"form": "10-Q",
"fp": "Q2",
"frame": "CY2021Q2I",
"fy": 2021,
"val": 0
},
{
"accn": "0000950170-21-003110",
"end": "2021-09-30",
"filed": "2021-11-04",
"form": "10-Q",
"fp": "Q3",
"frame": "CY2021Q3I",
"fy": 2021,
"val": 0
},
{
"accn": "0000950170-22-002008",
"end": "2021-12-31",
"filed": "2022-02-24",
"form": "10-K",
"fp": "FY",
"frame": "CY2021Q4I",
"fy": 2021,
"val": 0
}
],
"CommonStockSharesIssued": [
{
"accn": "0000950170-21-000956",
"end": "2020-12-31",
"filed": "2021-08-05",
"form": "10-Q",
"fp": "Q2",
"fy": 2021,
"val": 109447843
},
{
"accn": "0000950170-21-003110",
"end": "2020-12-31",
"filed": "2021-11-04",
"form": "10-Q",
"fp": "Q3",
"fy": 2021,
"val": 109447843
},
{
"accn": "0000950170-22-002008",
"end": "2020-12-31",
"filed": "2022-02-24",
"form": "10-K",
"fp": "FY",
"frame": "CY2020Q4I",
"fy": 2021,
"val": 109447843
},
{
"accn": "0000950170-21-000956",
"end": "2021-06-30",
"filed": "2021-08-05",
"form": "10-Q",
"fp": "Q2",
"frame": "CY2021Q2I",
"fy": 2021,
"val": 0
},
{
"accn": "0000950170-21-003110",
"end": "2021-09-30",
"filed": "2021-11-04",
"form": "10-Q",
"fp": "Q3",
"frame": "CY2021Q3I",
"fy": 2021,
"val": 0
},
{
"accn": "0000950170-22-002008",
"end": "2021-12-31",
"filed": "2022-02-24",
"form": "10-K",
"fp": "FY",
"frame": "CY2021Q4I",
"fy": 2021,
"val": 0
}
],
"CommonStockSharesOutstanding": [
{
"accn": "0000950170-21-000956",
"end": "2020-12-31",
"filed": "2021-08-05",
"form": "10-Q",
"fp": "Q2",
"fy": 2021,
"val": 109447843
},
{
"accn": "0000950170-21-003110",
"end": "2020-12-31",
"filed": "2021-11-04",
"form": "10-Q",
"fp": "Q3",
"fy": 2021,
"val": 109447843
},
{
"accn": "0000950170-22-002008",
"end": "2020-12-31",
"filed": "2022-02-24",
"form": "10-K",
"fp": "FY",
"frame": "CY2020Q4I",
"fy": 2021,
"val": 109447843
},
{
"accn": "0000950170-21-000956",
"end": "2021-06-30",
"filed": "2021-08-05",
"form": "10-Q",
"fp": "Q2",
"frame": "CY2021Q2I",
"fy": 2021,
"val": 0
},
{
"accn": "0000950170-21-003110",
"end": "2021-09-30",
"filed": "2021-11-04",
"form": "10-Q",
"fp": "Q3",
"frame": "CY2021Q3I",
"fy": 2021,
"val": 0
},
{
"accn": "0000950170-22-002008",
"end": "2021-12-31",
"filed": "2022-02-24",
"form": "10-K",
"fp": "FY",
"frame": "CY2021Q4I",
"fy": 2021,
"val": 0
}
]
}
}

你没有一个DataFrame,你有一个复杂的嵌套字典。我们可以试着这样理解它:

每个第二个级别的值是一个列表,可以做成一个DataFrame,但我们仍然可能想知道它来自哪里,所以我们给它一个MultiIndex与该信息。

dfs = []
names = ['category1', 'category2']
for i, x in data.items():
for j, y in x.items():
if isinstance(y, list):
index = pd.MultiIndex.from_tuples([(i, j)]*len(y), names=names)
dfs.append(pd.DataFrame(y, index=index))
# Optional, if you want the blank values as well:
#else:
#index = pd.MultiIndex.from_tuples([(i, j)], names=names)
#dfs.append(pd.DataFrame(index=index))
df = pd.concat(dfs)
print(df)

输出:

         accn         end       filed  form  fp      frame    fy       start           val
category1  category2
USD        CashCashEquivalentsRestrictedCashAndRestrictedC...  0000950170-22-002008  2019-12-31  2022-02-24  10-K  FY     CY2019  2021  2019-01-01 -1.984600e+07
CashCashEquivalentsRestrictedCashAndRestrictedC...  0000950170-21-000956  2020-06-30  2021-08-05  10-Q  Q2        NaN  2021  2020-01-01  9.247000e+06
CashCashEquivalentsRestrictedCashAndRestrictedC...  0000950170-21-003110  2020-09-30  2021-11-04  10-Q  Q3        NaN  2021  2020-01-01  3.344600e+07
CashCashEquivalentsRestrictedCashAndRestrictedC...  0000950170-22-002008  2020-12-31  2022-02-24  10-K  FY     CY2020  2021  2020-01-01  1.783500e+07
CashCashEquivalentsRestrictedCashAndRestrictedC...  0000950170-22-007876  2021-03-31  2022-05-05  10-Q  Q1   CY2021Q1  2022  2021-01-01  7.308000e+06
CashCashEquivalentsRestrictedCashAndRestrictedC...  0000950170-21-000956  2021-06-30  2021-08-05  10-Q  Q2        NaN  2021  2021-01-01  8.232910e+08
CashCashEquivalentsRestrictedCashAndRestrictedC...  0000950170-21-003110  2021-09-30  2021-11-04  10-Q  Q3        NaN  2021  2021-01-01  5.456410e+08
CashCashEquivalentsRestrictedCashAndRestrictedC...  0000950170-22-002008  2021-12-31  2022-02-24  10-K  FY     CY2021  2021  2021-01-01  1.338876e+09
CashCashEquivalentsRestrictedCashAndRestrictedC...  0000950170-22-007876  2022-03-31  2022-05-05  10-Q  Q1   CY2022Q1  2022  2022-01-01 -3.283430e+08
USD/shares CommonStockParOrStatedValuePerShare                 0000950170-21-000956  2020-12-31  2021-08-05  10-Q  Q2        NaN  2021         NaN  1.000000e-05
CommonStockParOrStatedValuePerShare                 0000950170-21-003110  2020-12-31  2021-11-04  10-Q  Q3        NaN  2021         NaN  1.000000e-05
CommonStockParOrStatedValuePerShare                 0000950170-22-002008  2020-12-31  2022-02-24  10-K  FY  CY2020Q4I  2021         NaN  1.000000e-05
CommonStockParOrStatedValuePerShare                 0000950170-21-000956  2021-06-30  2021-08-05  10-Q  Q2  CY2021Q2I  2021         NaN  1.000000e-05
CommonStockParOrStatedValuePerShare                 0000950170-21-003110  2021-09-30  2021-11-04  10-Q  Q3  CY2021Q3I  2021         NaN  1.000000e-05
CommonStockParOrStatedValuePerShare                 0000950170-22-002008  2021-12-31  2022-02-24  10-K  FY  CY2021Q4I  2021         NaN  1.000000e-05
shares     CommonStockCapitalSharesReservedForFutureIssuance   0000950170-21-000956  2020-12-31  2021-08-05  10-Q  Q2        NaN  2021         NaN  1.918493e+08
CommonStockCapitalSharesReservedForFutureIssuance   0000950170-21-003110  2020-12-31  2021-11-04  10-Q  Q3        NaN  2021         NaN  1.918493e+08
CommonStockCapitalSharesReservedForFutureIssuance   0000950170-22-002008  2020-12-31  2022-02-24  10-K  FY  CY2020Q4I  2021         NaN  1.918493e+08
CommonStockCapitalSharesReservedForFutureIssuance   0000950170-21-000956  2021-06-30  2021-08-05  10-Q  Q2  CY2021Q2I  2021         NaN  1.182864e+08
CommonStockCapitalSharesReservedForFutureIssuance   0000950170-21-003110  2021-09-30  2021-11-04  10-Q  Q3  CY2021Q3I  2021         NaN  1.137225e+08
CommonStockCapitalSharesReservedForFutureIssuance   0000950170-22-002008  2021-12-31  2022-02-24  10-K  FY        NaN  2021         NaN  1.063207e+08
CommonStockCapitalSharesReservedForFutureIssuance   0000950170-22-007876  2021-12-31  2022-05-05  10-Q  Q1  CY2021Q4I  2022         NaN  1.063207e+08
CommonStockCapitalSharesReservedForFutureIssuance   0000950170-22-007876  2022-03-31  2022-05-05  10-Q  Q1  CY2022Q1I  2022         NaN  1.163939e+08
CommonStockSharesAuthorized                         0000950170-21-000956  2020-12-31  2021-08-05  10-Q  Q2        NaN  2021         NaN  3.230000e+08
CommonStockSharesAuthorized                         0000950170-21-003110  2020-12-31  2021-11-04  10-Q  Q3        NaN  2021         NaN  3.230000e+08
CommonStockSharesAuthorized                         0000950170-22-002008  2020-12-31  2022-02-24  10-K  FY  CY2020Q4I  2021         NaN  3.230000e+08
CommonStockSharesAuthorized                         0000950170-21-000956  2021-06-30  2021-08-05  10-Q  Q2  CY2021Q2I  2021         NaN  0.000000e+00
CommonStockSharesAuthorized                         0000950170-21-003110  2021-09-30  2021-11-04  10-Q  Q3  CY2021Q3I  2021         NaN  0.000000e+00
CommonStockSharesAuthorized                         0000950170-22-002008  2021-12-31  2022-02-24  10-K  FY  CY2021Q4I  2021         NaN  0.000000e+00
CommonStockSharesIssued                             0000950170-21-000956  2020-12-31  2021-08-05  10-Q  Q2        NaN  2021         NaN  1.094478e+08
CommonStockSharesIssued                             0000950170-21-003110  2020-12-31  2021-11-04  10-Q  Q3        NaN  2021         NaN  1.094478e+08
CommonStockSharesIssued                             0000950170-22-002008  2020-12-31  2022-02-24  10-K  FY  CY2020Q4I  2021         NaN  1.094478e+08
CommonStockSharesIssued                             0000950170-21-000956  2021-06-30  2021-08-05  10-Q  Q2  CY2021Q2I  2021         NaN  0.000000e+00
CommonStockSharesIssued                             0000950170-21-003110  2021-09-30  2021-11-04  10-Q  Q3  CY2021Q3I  2021         NaN  0.000000e+00
CommonStockSharesIssued                             0000950170-22-002008  2021-12-31  2022-02-24  10-K  FY  CY2021Q4I  2021         NaN  0.000000e+00
CommonStockSharesOutstanding                        0000950170-21-000956  2020-12-31  2021-08-05  10-Q  Q2        NaN  2021         NaN  1.094478e+08
CommonStockSharesOutstanding                        0000950170-21-003110  2020-12-31  2021-11-04  10-Q  Q3        NaN  2021         NaN  1.094478e+08
CommonStockSharesOutstanding                        0000950170-22-002008  2020-12-31  2022-02-24  10-K  FY  CY2020Q4I  2021         NaN  1.094478e+08
CommonStockSharesOutstanding                        0000950170-21-000956  2021-06-30  2021-08-05  10-Q  Q2  CY2021Q2I  2021         NaN  0.000000e+00
CommonStockSharesOutstanding                        0000950170-21-003110  2021-09-30  2021-11-04  10-Q  Q3  CY2021Q3I  2021         NaN  0.000000e+00
CommonStockSharesOutstanding                        0000950170-22-002008  2021-12-31  2022-02-24  10-K  FY  CY2021Q4I  2021         NaN  0.000000e+00

与空白输出:

>>> print(df.head(25))
         accn         end       filed  form   fp      frame      fy       start           val
category1  category2
Segment    CashCashEquivalentsRestrictedCashAndRestrictedC...                   NaN         NaN         NaN   NaN  NaN        NaN     NaN         NaN           NaN
CommonStockCapitalSharesReservedForFutureIssuance                    NaN         NaN         NaN   NaN  NaN        NaN     NaN         NaN           NaN
CommonStockParOrStatedValuePerShare                                  NaN         NaN         NaN   NaN  NaN        NaN     NaN         NaN           NaN
CommonStockSharesAuthorized                                          NaN         NaN         NaN   NaN  NaN        NaN     NaN         NaN           NaN
CommonStockSharesIssued                                              NaN         NaN         NaN   NaN  NaN        NaN     NaN         NaN           NaN
CommonStockSharesOutstanding                                         NaN         NaN         NaN   NaN  NaN        NaN     NaN         NaN           NaN
USD        CashCashEquivalentsRestrictedCashAndRestrictedC...  0000950170-22-002008  2019-12-31  2022-02-24  10-K   FY     CY2019  2021.0  2019-01-01 -1.984600e+07
CashCashEquivalentsRestrictedCashAndRestrictedC...  0000950170-21-000956  2020-06-30  2021-08-05  10-Q   Q2        NaN  2021.0  2020-01-01  9.247000e+06
CashCashEquivalentsRestrictedCashAndRestrictedC...  0000950170-21-003110  2020-09-30  2021-11-04  10-Q   Q3        NaN  2021.0  2020-01-01  3.344600e+07
CashCashEquivalentsRestrictedCashAndRestrictedC...  0000950170-22-002008  2020-12-31  2022-02-24  10-K   FY     CY2020  2021.0  2020-01-01  1.783500e+07
CashCashEquivalentsRestrictedCashAndRestrictedC...  0000950170-22-007876  2021-03-31  2022-05-05  10-Q   Q1   CY2021Q1  2022.0  2021-01-01  7.308000e+06
CashCashEquivalentsRestrictedCashAndRestrictedC...  0000950170-21-000956  2021-06-30  2021-08-05  10-Q   Q2        NaN  2021.0  2021-01-01  8.232910e+08
CashCashEquivalentsRestrictedCashAndRestrictedC...  0000950170-21-003110  2021-09-30  2021-11-04  10-Q   Q3        NaN  2021.0  2021-01-01  5.456410e+08
CashCashEquivalentsRestrictedCashAndRestrictedC...  0000950170-22-002008  2021-12-31  2022-02-24  10-K   FY     CY2021  2021.0  2021-01-01  1.338876e+09
CashCashEquivalentsRestrictedCashAndRestrictedC...  0000950170-22-007876  2022-03-31  2022-05-05  10-Q   Q1   CY2022Q1  2022.0  2022-01-01 -3.283430e+08
CommonStockCapitalSharesReservedForFutureIssuance                    NaN         NaN         NaN   NaN  NaN        NaN     NaN         NaN           NaN
CommonStockParOrStatedValuePerShare                                  NaN         NaN         NaN   NaN  NaN        NaN     NaN         NaN           NaN
CommonStockSharesAuthorized                                          NaN         NaN         NaN   NaN  NaN        NaN     NaN         NaN           NaN
CommonStockSharesIssued                                              NaN         NaN         NaN   NaN  NaN        NaN     NaN         NaN           NaN
CommonStockSharesOutstanding                                         NaN         NaN         NaN   NaN  NaN        NaN     NaN         NaN           NaN
USD/shares CashCashEquivalentsRestrictedCashAndRestrictedC...                   NaN         NaN         NaN   NaN  NaN        NaN     NaN         NaN           NaN
CommonStockCapitalSharesReservedForFutureIssuance                    NaN         NaN         NaN   NaN  NaN        NaN     NaN         NaN           NaN
CommonStockParOrStatedValuePerShare                 0000950170-21-000956  2020-12-31  2021-08-05  10-Q   Q2        NaN  2021.0         NaN  1.000000e-05
CommonStockParOrStatedValuePerShare                 0000950170-21-003110  2020-12-31  2021-11-04  10-Q   Q3        NaN  2021.0         NaN  1.000000e-05
CommonStockParOrStatedValuePerShare                 0000950170-22-002008  2020-12-31  2022-02-24  10-K   FY  CY2020Q4I  2021.0         NaN  1.000000e-05