使用指定列的panda字典创建一个表



每个人。

我需要帮助创建具有指定列的表

简单示例:

from collections import defaultdict
import pandas as pd
d = defaultdict(list)
mapp = {'A': 'Error 3231', 'B': 'Error 23143243', 'C': 'Error 3242e32'}
for i in ['A', 'B']:
d[i].append(f'U1_{mapp[i]}')
for i in ['A', 'C']:
d[i].append(f'R1_{mapp[i]}')

当我使用df1 = pd.DataFrame.from_dict(d, orient='index')时,它会创建

0              1
A      U1_Error 3231  R1_Error 3231
B  U1_Error 23143243           None
C   R1_Error 3242e32           None

但实际上,我想得到另一张像下面这样的表:

U1                  R1
A       U1_Error 3231       R1_Error 3231
B   U1_Error 23143243                None
C                None    R1_Error 3242e32

值U1和R1是固定的。

谢谢。

转换d以创建数据帧。通常最好在创建数据帧之前重新格式化数据:

df = pd.Series({(k, v[:2]): v for k, l in d.items() for v in l}).unstack()
print(df)
# Output
R1               U1
A  R1_Error dsad2314  U1_Error 232324
B                NaN  U1_Error 232324
C  R1_Error dsad2314              NaN

转换:

# From
>>> dict(d)
{'A': ['U1_Error 232324', 'R1_Error dsad2314'],
'B': ['U1_Error 232324'],
'C': ['R1_Error dsad2314']}
# To
>>> {(k, v[:2]): v for k, l in d.items() for v in l}
{('A', 'U1'): 'U1_Error 232324',
('A', 'R1'): 'R1_Error dsad2314',
('B', 'U1'): 'U1_Error 232324',
('C', 'R1'): 'R1_Error dsad2314'}

最新更新