位置(行/列)のデータがあります、
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]
コメントを追加