【问题标题】:Dictionary data to CSV with Pandas in Python 3在 Python 3 中使用 Pandas 将数据字典转换为 CSV
【发布时间】:2018-03-30 23:02:17
【问题描述】:

下面的代码可以将包含两列的 CSV 转换为字典:

import pandas as pd

df = pd.read_csv('file.csv', sep=',')
dct = df.groupby('group').ip.apply(lambda x: x.tolist()).to_dict()

print(dct)
{'A': ['192.168.1.1', '192.168.1.4'],
 'B': ['192.168.1.2', '192.168.1.5'],
 'C': ['192.168.1.3', '192.168.1.6']}

我将如何做相反的事情?我会有这本字典:

dct = {'A': ['192.168.1.1', '192.168.1.4'],
 'B': ['192.168.1.2', '192.168.1.5'],
 'C': ['192.168.1.3', '192.168.1.6']}

并希望将其转换为具有两列的 CSV,如下所示:

ip,group
192.168.1.1,A
192.168.1.2,B
192.168.1.3,C
192.168.1.4,A
192.168.1.5,B
192.168.1.6,C

用户@cᴏʟᴅsᴘᴇᴇᴅ 在第一部分帮助了我,pandas 目前在我的 python 技能之上。感谢您的帮助!

【问题讨论】:

    标签: python python-3.x pandas csv


    【解决方案1】:

    pd.DataFrame + melt.

    df = pd.DataFrame(dct).melt(var_name='group', value_name='ip')
    print(df)
      group           ip
    0     A  192.168.1.1
    1     A  192.168.1.4
    2     B  192.168.1.2
    3     B  192.168.1.5
    4     C  192.168.1.3
    5     C  192.168.1.6
    

    使用df.to_csv保存到CSV:

    df.to_csv('out.csv', sep=',', index=False)
    

    【讨论】:

    • @coldspeed 我对两行代码的工作方式印象深刻!有什么办法可以用 0-5 跳过第一列?我需要找一本好书学习熊猫!
    • @user1781482 编辑,设置index=False :-)
    猜你喜欢
    • 2019-04-11
    • 2022-09-30
    • 2017-09-13
    • 2018-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-09
    相关资源
    最近更新 更多