鱼C论坛

 找回密码
 立即注册
查看: 1947|回复: 3

[已解决]数据合并,格式化内容

[复制链接]
发表于 2020-12-21 22:00:14 | 显示全部楼层 |阅读模式
7鱼币
各位鱼友大家晚上好,
        我有一个excel文件其内容如下:
        编号        词语        内容        英文同义词集合        WORD1        WORD2        POS
        10978422        A        节奏        tempo,pace,        tempo        tempo        N
        10978422        B        节奏        tempo,pace,        tempo        tempo        N
        10978422        C        节奏        tempo,pace,        tempo        tempo        N
        10978422        D        节奏        tempo,pace,        tempo        tempo        N
        10978422        E        节奏        tempo,pace,        tempo        tempo        N
        10978422        F        节奏        tempo,pace,        tempo        tempo        N
        10978422        G        节奏        tempo,pace,        tempo        tempo        N
        10978422        H        节奏        tempo,pace,        tempo        tempo        N
        10978422        I        步调        tempo,pace,        tempo        tempo        N

我想按照编号一列的【重复项】更换数据格式或者说合并数据,想得到以下结果:

编号        词语        内容        英文同义词集合        WORD1        WORD2        POS
10978422        【A,B,C,D,E,F,G,H,I】        【节奏,节奏,节奏,节奏,节奏,节奏,节奏,节奏,步调】        tempo,pace,        tempo        tempo        N
也就是说前三列需要合并的感觉,写望你能帮助,真心感谢。(ps:因为等级原因只能发小的悬赏,还望海涵)

最佳答案
2020-12-21 22:00:15
import pandas as pd
def mergedata(x):
    c0=x.iloc[0,0]
    c1=[m for m in x['词语']]
    c1='['+','.join(c1)+']'
    c2=[m for m in x['内容']]
    c2='['+','.join(c2)+']'
    c3=x.iloc[0,3]
    c4=x.iloc[0,4]
    c5=x.iloc[0,5]
    c6=x.iloc[0,6]
    s=pd.DataFrame([c0,c1,c2,c3,c4,c5,c6],index=x.columns).T
    return s

df=pd.read_excel('excel.xlsx')
df2=df.groupby('编号',as_index=False).apply(mergedata)
df2.to_excel('result.xlsx',index=None)
python做的,把数据放到excel.xlsx

最佳答案

查看完整内容

python做的,把数据放到excel.xlsx
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-21 22:00:15 | 显示全部楼层    本楼为最佳答案   
import pandas as pd
def mergedata(x):
    c0=x.iloc[0,0]
    c1=[m for m in x['词语']]
    c1='['+','.join(c1)+']'
    c2=[m for m in x['内容']]
    c2='['+','.join(c2)+']'
    c3=x.iloc[0,3]
    c4=x.iloc[0,4]
    c5=x.iloc[0,5]
    c6=x.iloc[0,6]
    s=pd.DataFrame([c0,c1,c2,c3,c4,c5,c6],index=x.columns).T
    return s

df=pd.read_excel('excel.xlsx')
df2=df.groupby('编号',as_index=False).apply(mergedata)
df2.to_excel('result.xlsx',index=None)
python做的,把数据放到excel.xlsx
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-12-22 15:06:01 | 显示全部楼层
chipeyown 发表于 2020-12-22 11:11
python做的,把数据放到excel.xlsx

哇哦,完美解决了我的问题,谢谢您的帮助,再次感受到了python的强大,向您学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-12-22 15:12:44 | 显示全部楼层
chipeyown 发表于 2020-12-21 22:00
python做的,把数据放到excel.xlsx

您好,能帮我 再稍微改进一些吗?因为我发现词语一列里有一个词组成了一个集合的情况,例如:
     09963172N        [A]        [北方]        north,magnetic_north,compass_north,        north        north        N
     我目前不想要这种就有一个词的,有没有可以动态更改的改进方式呢,比如有的时候我想要这种数据 我就把代码中#去掉,不想要就 跑以下这一行,希望您能帮忙,谢谢。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-17 00:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表