С учетом следующего кадра данных:
df = pd.DataFrame([[1, 3, 'USA'], [2, 2, 'USA'], [3, 5, 'China'], [4 ,7, 'USA']], columns =['A','B','C'])
A B C
0 1 3 USA
1 2 2 USA
2 3 5 China
3 4 7 USA
Попробуйте этот однострочный код, используя grupby , apply и to_csv :
df.groupby('C').apply(lambda row: row[['A']].to_csv(row.C.values[0]+'.csv', index=False))
Это должно решить вашу проблему хитро.
СОВЕТ : Если вместо сохранения вашего файла в CSV, вы хотите сохранить его в формате Excel, см. to_excel функция панд.
Если вместо этого вы захотите записать данные в файл позже, таким образом вы создадите фрейм данных с интересующими вас данными:
df.groupby('C').apply(lambda row: row.A.values)
# output:
C
China [3]
USA [1, 2, 4]
или используя groupby.agg :
df.groupby('C').agg({'A': lambda row: list(row.values)})
Таким образом, вместо этого вы создаете словарь:
df.groupby('C').agg({'A': lambda row: list(row.values)}).to_dict()['A']
# output: {'China': [3], 'USA': [1, 2, 4]}