我有一个嵌套的数据框架,我需要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