我有位置(行/列)的数据,
df = pd.DataFrame({'ID': ['a01', 'a01', 'a01', 'a01', 'a01', 'a01', 'a01', 'a01', 'b02', 'b02', 'b02','b02', 'b02', 'b02', 'b02', 'b02'],
'Row': [1, 1, 1, 2, 2, 2, 3, 3, 3, 1, 1, 2, 2, 3, 3, 3],
'Col': [1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 3, 1, 3, 1, 2, 3],
'Result': ['p', 'f', 'p', 'p', 'p', 'f', 'p', 'p', 'p', 'p', 'p', 'p', 'f', 'p', 'p', 'p']})
我试图将其转换为表格,并计算表格中的p和f,如下所示:
ID: a01
p f p
p p f
p p p
p: 7 f: 2
ID: b02
p p
p f
p p p
p: 6 f: 1
缺少一些数据,但是行和列的数目是固定的,因此请将它们留空。
我不知道如何实现这一目标,有什么想法吗?
您可以这样操作:
我在输入数据框中确实纠正并输入了错误。
(将df.loc [8,'ID']中的值从b02更改为a01)
df = pd.DataFrame({'ID': ['a01', 'a01', 'a01', 'a01', 'a01', 'a01', 'a01', 'a01', 'a01', 'b02', 'b02','b02', 'b02', 'b02', 'b02', 'b02'],
'Row': [1, 1, 1, 2, 2, 2, 3, 3, 3, 1, 1, 2, 2, 3, 3, 3],
'Col': [1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 3, 1, 3, 1, 2, 3],
'Result': ['p', 'f', 'p', 'p', 'p', 'f', 'p', 'p', 'p', 'p', 'p', 'p', 'f', 'p', 'p', 'p']})
df
dfs = {}
for n, g in df.groupby('ID'):
dfs[n] = g.pivot('Row', 'Col', 'Result').fillna('')
print(f'ID: {n}')
print(dfs[n])
print('\n')
print(dfs[n].stack().value_counts().to_dict())
print('\n')
输出:
ID: a01
Col 1 2 3
Row
1 p f p
2 p p f
3 p p p
{'p': 7, 'f': 2}
ID: b02
Col 1 2 3
Row
1 p p
2 p f
3 p p p
{'p': 6, 'f': 1}
更新以添加串联并输出到csv或excel。
pd.concat(dfs, keys=dfs.keys()).to_csv('out.csv')
!type out.csv
输出文件内容:
,Row,1,2,3
a01,1,p,f,p
a01,2,p,p,f
a01,3,p,p,p
b02,1,p,,p
b02,2,p,,f
b02,3,p,p,p
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句