Update个
您可以修复CSV文件:
def read_csv(filename):
with open('marks.csv') as fp:
buf = io.StringIO()
header = fp.readline()
num_col = headers.count(',')
buf.writelines(header)
for row in fp:
diff = num_col - row.count(',')
buf.writelines(','*diff + row.lstrip())
buf.seek(0)
return pd.read_csv(buf).ffill()
df = read_csv('marks.csv')
# Use the loop with groupby
IIUC,你要找的是groupby
.
假设以下文件marks.csv
:
student_name,gender,subject,marks
Mark,M,english,90
Mark,M,biology,80
Mark,M,chemistry,77
Mark,M,physics,89
George,M,french,81
George,M,biology,66
George,M,chemistry,82
George,M,physics,79
George,M,economic,57
Lisa,F,german,77
Lisa,F,biology,89
Lisa,F,chemistry,90
Lisa,F,physics,92
Lisa,F,economic,96
您可以执行以下操作:
df = pd.read_csv('marks.csv')
for name, subdf in df.groupby('student_name', sort=False):
print(f"[{name}]")
print(subdf, end='\n\n')
# Do stuff here
输出:
[Mark]
student_name gender subject marks
0 Mark M english 90
1 Mark M biology 80
2 Mark M chemistry 77
3 Mark M physics 89
[George]
student_name gender subject marks
4 George M french 81
5 George M biology 66
6 George M chemistry 82
7 George M physics 79
8 George M economic 57
[Lisa]
student_name gender subject marks
9 Lisa F german 77
10 Lisa F biology 89
11 Lisa F chemistry 90
12 Lisa F physics 92
13 Lisa F economic 96
更多关于groupby
:Group by: split-apply-combine的内容