如何基于CSV文件python中另一列的值将json数据写入列中

2024-10-03 09:20:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个很大的CSV文件,它的值是:​​日期、商店、雇员ID、技能。 我想创建一个新的列,它是一个JSON:Empl,具有在商店工作一天的技能

我的CSV文件:

Date        Store   ID_Empl Skill
20190517    9999    111756  1
20190517    9999    146465  2
20190519    C211    169838  3
20190519    C211    176859  1
20190521    C211    146465  2
20190510    D211    130171  1
20190510    D211    111756  2

我想要的CSV文件:

Date        Store       Empl_Skill
20190517    9999    {111765: 1, 146465: 2}
20190519    C211    {169838: 3, 176859: 1}
20190521    C211    {146465: 2}
20190510    D211    { 130171: 1, 111756: 2}

Tags: 文件csvstoreidjsondate技能skill
1条回答
网友
1楼 · 发布于 2024-10-03 09:20:51

<强>1º 使用pd.read_csv读取csv文件:

#import pandas as pd #import  pandas library
df=pd.read_csv('data.csv')
print(df)



#Date        Store   ID_Empl Skill
#20190517    9999    111756  1
#20190517    9999    146465  2
#20190519    C211    169838  3
#20190519    C211    176859  1
#20190521    C211    146465  2
#20190510    D211    130171  1
#20190510    D211    111756  2

<强>2º 使用groupby.apply获取输出数据帧:

new_df=df.groupby(['Date','Store']).apply(lambda x: dict(zip(x['ID_Empl'],x['Skill']))).rename('Empl_Skill').reset_index()
print(new_df)

       Date Store              Empl_Skill
0  20190510  D211  {130171: 1, 111756: 2}
1  20190517  9999  {111756: 1, 146465: 2}
2  20190519  C211  {169838: 3, 176859: 1}
3  20190521  C211             {146465: 2}

3使用pd.to_csv保存csv:

new_df.to_csv('new_data.csv')

相关问题 更多 >