Pandas:如何扩展包含列中具有不同键的字典的数据框行?

时间:2018-02-18 16:35:07

标签: python pandas

我有点卡住了,你能帮我解决这个问题吗?我已经简化了我面临的问题:

输入

enter image description here

期望输出

enter image description here

我知道如何处理col中字典的情况。 c具有相同的密钥。

3 个答案:

答案 0 :(得分:1)

您可以按构造函数创建 RUN Set-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters' -Name ServerPriorityTimeLimit -Value 0 -Type DWord ,然后按http://example.com/admin/index.php?cache=1重新制作,将stack重新设置为原始文件:

DataFrame

答案 1 :(得分:0)

这是一种方式:

import pandas as pd
from itertools import chain

df = pd.DataFrame([['a0', 'b0', {'c00': 'v00', 'c01': 'v01'}],
                   ['a1', 'b1', {'c10': 'v10'}],
                   ['a2', 'b2', {'c20': 'v20', 'c21': 'v21', 'c22': 'v22'}] ],
                  columns=['a', 'b', 'c'])

# first convert 'c' to list of tuples
df['c'] = df['c'].apply(lambda x: list(x.items()))
lens = list(map(len, df['c']))

# create dataframe
df_out = pd.DataFrame({'a': np.repeat(df['a'].values, lens),
                       'b': np.repeat(df['b'].values, lens),
                       'c': list(chain.from_iterable(df['c'].values))})

# unpack tuple
df_out = df_out.join(df_out['c'].apply(pd.Series))\
               .rename(columns={0: 'key', 1: 'val'}).drop('c', 1)

#     a   b  key  val
# 0  a0  b0  c00  v00
# 1  a0  b0  c01  v01
# 2  a1  b1  c10  v10
# 3  a2  b2  c20  v20
# 4  a2  b2  c21  v21
# 5  a2  b2  c22  v22

答案 2 :(得分:0)

我的解决方案是下一个:

import pandas as pd
t=pd.DataFrame([['a0','b0',{'c00':'v00','c01':'v01'}],['a1','b1',{'c10':'v10'}],['a2','b2',{'c20':'v20','c21':'v21','c22':'v22'}]],columns=['a','b','c'])
l2=[]
for i in t.index:
    for j in t.loc[i,'c']:
        l2+=[[t.loc[i,'a'],t.loc[i,'b'],j,t.loc[i,'c'][j]]]
t2=pd.DataFrame(l2,columns=['a','b','key','val'])

其中't'是您的DataFrame,您可以根据需要获得。