5 回答

TA貢獻1862條經驗 獲得超6個贊
此解決方案也適用,使用unique:
data_list = [['mark', 1], ['tom', 2], ['mark', 3], ['mark', 4], ['tom', 5], ['stuart', 6]]
df = pd.DataFrame(data_list, columns=['name', 'id'])
for name in df['name'].unique():
? ? df.loc[df['name'] == name].to_csv(name + '.csv')

TA貢獻1830條經驗 獲得超3個贊
試試這個df.groupby
:
>>> master_df = pd.DataFrame(data_list, columns = ['name', 'ID'])
>>> for key, sub_df in master_df.groupby('name'):
? ? ? ? sub_df.reset_index(drop=True).to_csv(key + '.csv')
對于您的功能:
def convertMerge(name_list):
? ? df = pd.DataFrame(name_list,columns=['name','id'])
? ? for key, sub_df in df.groupby('name'):
? ? ? ? sub_df.reset_index(drop=True).to_csv(key + '.csv')
convertMerge(data_list)
如果打印它看起來像這樣:
>>> master_df = pd.DataFrame(data_list, columns = ['name', 'ID'])
>>> for key, sub_df in master_df.groupby('name', sort=False):
? ? ? ? print(key + '.csv')
? ? ? ? sub_df.reset_index(drop=True)
# output:
mark.csv
? ?name? ID
0? mark? ?1
1? mark? ?3
2? mark? ?4
tom.csv
? name? ID
0? tom? ?2
1? tom? ?5
stuart.csv
? ? ?name? ID
0? stuart? ?6

TA貢獻1735條經驗 獲得超5個贊
我認為這是您喜歡的解決方案......邏輯在convertMerge
data_list = [['mark', 1], ['tom', 2], ['mark', 3], ['mark', 4], ['tom', 5], ['stuart', 6]]
def convertMerge(name_list):
name = name_list[0]
df = pd.DataFrame([name_list],columns=['name','id'])
if not os.path.isfile(f'{name}.csv'):
df.to_csv(f'{name}.csv')
else:
df.to_csv(f'{name}.csv', mode='a', header=False)
for name_list in data_list:
convertMerge(name_list)

TA貢獻1780條經驗 獲得超4個贊
你可以用apply做到這一點:
pd.DataFrame([['mark',?1],?['tom',?2],?['mark',?3],?['mark',?4],?['tom',?5],?['stuart',?6]],?columns?=?['name',?'ID']).groupby('name').apply(lambda?d:?d.to_csv(f'{d.name}.csv',?index=False))

TA貢獻1797條經驗 獲得超6個贊
這應該做你想做的:
data_list = [['mark', 1], ['tom', 2], ['mark', 3], ['mark', 4], ['tom', 5], ['stuart', 6]]
def convertMerge():
df = pd.DataFrame()
for name_list in data_list:
df = df.append(pd.DataFrame([name_list],columns=['name','id']))
[y.reset_index(drop = True).to_csv(x + '.csv', index = False) for x, y in df.groupby('name')]
convertMerge()
添加回答
舉報