为了账号安全,请及时绑定邮箱和手机立即绑定

熊猫未正确重新索引 NaN

熊猫未正确重新索引 NaN

临摹微笑 2022-08-16 16:38:15
我在删除NaN值后无法重新索引熊猫数据帧。我正在尝试将df列中的字典提取到另一个df,然后将这些值连接回相应行中的原始df。df = pd.DataFrame({'col1': [1, 2, 3, 4, 5],                    'col2': [np.NaN, np.NaN, {'aa': 11, 'bb': 22}, {'aa': 33, 'bb': 44}, {'aa': 55, 'bb': 66}]})df    col1 col20   1    NaN1   2    NaN2   3    {'aa': 11, 'bb': 22}3   4    {'aa': 33, 'bb': 44}4   5    {'aa': 55, 'bb': 66}期望的最终结果是:    col1    aa      bb0   1       NaN     NaN1   2       NaN     NaN2   3       11      223   4       33      444   5       55      66如果我将 col2 传递给 pandas .tolist() 函数,则不会解压缩该 dict。pd.DataFrame(df['col2'].tolist())0   NaN1   NaN2   {'aa': 11, 'bb': 22}3   {'aa': 33, 'bb': 44}4   {'aa': 55, 'bb': 66}如果我使用 dropna(),则字典被解压缩,但索引被重置pd.DataFrame(df['col2'].dropna().tolist())    aa  bb0   11  221   33  442   55  66如果我尝试将索引重置为原始df的索引,则行数据将显示在不同的索引位置。pd.DataFrame(df['col2'].dropna().tolist()).reindex(df.index)    aa  bb0   11.0    22.01   33.0    44.02   55.0    66.03   NaN     NaN4   NaN     NaN数据是多种多样的,并且无法知道列中任何一点将有多少个NaN值。任何帮助都非常感谢。
查看完整描述

3 回答

?
慕的地8271018

TA贡献1796条经验 获得超4个赞

使用Series.to_dict来考虑索引:


df.join(pd.DataFrame(df['col2'].to_dict()).T).drop(columns='col2')

   col1    aa    bb

0     1   NaN   NaN

1     2   NaN   NaN

2     3  11.0  22.0

3     4  33.0  44.0

4     5  55.0  66.0


查看完整回答
反对 回复 2022-08-16
?
慕运维8079593

TA贡献1876条经验 获得超5个赞

IIUC 通过传递 after 来修复您的代码indexdropna


s=df.col2.dropna()

df=df.join(pd.DataFrame(s.tolist(), index=s.index))

df

Out[103]: 

   col1                  col2    aa    bb

0     1                   NaN   NaN   NaN

1     2                   NaN   NaN   NaN

2     3  {'aa': 11, 'bb': 22}  11.0  22.0

3     4  {'aa': 33, 'bb': 44}  33.0  44.0

4     5  {'aa': 55, 'bb': 66}  55.0  66.0


查看完整回答
反对 回复 2022-08-16
?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

尝试:pd.concat([df['col1'], df['col2'].apply(pd.Series)], axis=1)


   col1    aa    bb

0     1   NaN   NaN

1     2   NaN   NaN

2     3  11.0  22.0

3     4  33.0  44.0

4     5  55.0  66.0


查看完整回答
反对 回复 2022-08-16
  • 3 回答
  • 0 关注
  • 86 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信