如何解压行 pandas 数据框中的字典
How to unpack dictionaries in rows pandas dataframe
我在 pandas 中有一个数据框,看起来像这样:
id column_name_1 column_name_2 column_name_3
1 {acct_nr_1: value, acct_nr_2:value} {acct_nr_1: value, acct_nr_2:value} {acct_nr_1: value, acct_nr_2:value}
2 {acct_nr_1: value, acct_nr_2:value} {acct_nr_1: value, acct_nr_2:value} {acct_nr_1: value, acct_nr_2:value}
3 {acct_nr_1: value, acct_nr_2:value} {acct_nr_1: value, acct_nr_2:value} {acct_nr_1: value, acct_nr_2:value}
4 {acct_nr_1: value, acct_nr_2:value} {acct_nr_1: value, acct_nr_2:value} {acct_nr_1: value, acct_nr_2:value}
有些词典有两个以上的帐号,而且数值不一样。我想要做的是获得一个包含相同列加一列的数据框。新列应该有帐号(如果我只有在字典中)并且如果有多个帐户但分为几行则相同。在每一列中,我只想获取值。
所以新的dataframe应该是这样的:
id account_number column_name_1 column_name_2 column_name_3
1 acct_nr_1 value value value
1 acct_nr_2 value value value
2 acct_nr_1 value value value
2 acct_nr_2 value value value
3 acct_nr_1 value value value
3 acct_nr_2 value value value
4 acct_nr_1 value value value
4 acct_nr_2 value value value
我找不到解决它的简单(或任何)方法。
谢谢!
堆叠 df 以转换为具有两个级别的多索引系列,然后从字典创建一个新的数据框,stack
新的 df 以转换为具有三个级别的多索引系列,现在 unstack
级别 1
重塑回所需格式
s = df.set_index('id').stack()
(pd.DataFrame([*s], index=s.index)
.stack()
.unstack(1)
.rename_axis(['id', 'account_number'])
.reset_index())
id account_number column_name_1 column_name_2 column_name_3
0 1 acct_nr_1 value value value
1 1 acct_nr_2 value value value
2 2 acct_nr_1 value value value
3 2 acct_nr_2 value value value
4 3 acct_nr_1 value value value
5 3 acct_nr_2 value value value
6 4 acct_nr_1 value value value
7 4 acct_nr_2 value value value
我在 pandas 中有一个数据框,看起来像这样:
id column_name_1 column_name_2 column_name_3
1 {acct_nr_1: value, acct_nr_2:value} {acct_nr_1: value, acct_nr_2:value} {acct_nr_1: value, acct_nr_2:value}
2 {acct_nr_1: value, acct_nr_2:value} {acct_nr_1: value, acct_nr_2:value} {acct_nr_1: value, acct_nr_2:value}
3 {acct_nr_1: value, acct_nr_2:value} {acct_nr_1: value, acct_nr_2:value} {acct_nr_1: value, acct_nr_2:value}
4 {acct_nr_1: value, acct_nr_2:value} {acct_nr_1: value, acct_nr_2:value} {acct_nr_1: value, acct_nr_2:value}
有些词典有两个以上的帐号,而且数值不一样。我想要做的是获得一个包含相同列加一列的数据框。新列应该有帐号(如果我只有在字典中)并且如果有多个帐户但分为几行则相同。在每一列中,我只想获取值。
所以新的dataframe应该是这样的:
id account_number column_name_1 column_name_2 column_name_3
1 acct_nr_1 value value value
1 acct_nr_2 value value value
2 acct_nr_1 value value value
2 acct_nr_2 value value value
3 acct_nr_1 value value value
3 acct_nr_2 value value value
4 acct_nr_1 value value value
4 acct_nr_2 value value value
我找不到解决它的简单(或任何)方法。
谢谢!
堆叠 df 以转换为具有两个级别的多索引系列,然后从字典创建一个新的数据框,stack
新的 df 以转换为具有三个级别的多索引系列,现在 unstack
级别 1
重塑回所需格式
s = df.set_index('id').stack()
(pd.DataFrame([*s], index=s.index)
.stack()
.unstack(1)
.rename_axis(['id', 'account_number'])
.reset_index())
id account_number column_name_1 column_name_2 column_name_3
0 1 acct_nr_1 value value value
1 1 acct_nr_2 value value value
2 2 acct_nr_1 value value value
3 2 acct_nr_2 value value value
4 3 acct_nr_1 value value value
5 3 acct_nr_2 value value value
6 4 acct_nr_1 value value value
7 4 acct_nr_2 value value value