DataFrame的源是一个dict列表,如-ls = [{'fileName': 'file_01', 'col1': {'key1': 'value1a', 'key2': 'value1b'}}, {'fileName': 'file_02', 'col1': {'key1': 'value2a', 'key2': 'value2b', 'key3':'value2c'}}, {'fileName': 'file_03', 'col1': {'key1': 'value3a', 'key3': 'value3c'}}]
数据帧创建为df = pd.DataFrame(ls, columns=['fileName', 'col1'])
熊猫数据帧df
看起来像-
fileName col1
file_01 {'key1':value1a, 'key2':value1b}
file_02 {'key1':value2a, 'key2':value2b, 'key3':value2c}
file_03 {'key1':value3a, 'key3':value3c}
我如何将其转换为-
fileName key1 key2 key3
file_01 value1a value1b
file_02 value2a value2b value2c
file_03 value3a value3c
我试过-df = pd.concat([df['fileName'], pd.get_dummies(df['col1'].apply(pd.Series))], axis=1)
我在某些情况下看到了如下结果:
fileName key1_value1a key1_value2a key1_value3a
file_01 value1a
file_02 value2a
file_03 value3a
您可以尝试以下解决方案:
df['col1'].apply(pd.Series)
将dict拆分为单独的列使用^{} :
你能试一下吗
如果
{'key1':value1a, 'key2':value1b}, {'key1':value2a, 'key2':value2b, 'key3':value2c}, ...
属于dict
类型,则上述方法将起作用这个解决方案也可以,但是@vorspring提供的solution看起来不错
相关问题 更多 >
编程相关推荐