亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

數據框:將 python 列表轉換為數據框組?

數據框:將 python 列表轉換為數據框組?

白板的微信 2023-04-18 14:37:33
我有一個清單數據列表    [['mark', 1], ['tom', 2], ['mark', 3], ['mark', 4], ['tom', 5], ['stuart', 6]]傳遞 data_list 值以在此處運行。    for name_list in data_list:        convertMerge(name_list)以及一個接受列表并將其轉換為 df 并保存的函數。    def convertMerge(name_list):        df = pd.DataFrame([name_list],columns=['name','id'])        df.to_csv('names'.csv)如果 df 具有相同的name.(這必須發生在convertMerge函數內部)。結果輸出應該有這樣的 df :     df with mark             mark.csv                name    id            0   mark    1            1   mark    3            2   mark    4    df with tom                       tom.csv                name    id            0   tom     2            1   tom     5    df with stuart            stuart.csv`                name    id            0   stuart  6
查看完整描述

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')


查看完整回答
反對 回復 2023-04-18
?
牛魔王的故事

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


查看完整回答
反對 回復 2023-04-18
?
喵喔喔

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)


查看完整回答
反對 回復 2023-04-18
?
Helenr

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))



查看完整回答
反對 回復 2023-04-18
?
FFIVE

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()


查看完整回答
反對 回復 2023-04-18
  • 5 回答
  • 0 關注
  • 175 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號