如何使用熊猫在CSV文件中合并多列?

时间:2019-04-14 10:33:44

标签: python-3.x pandas

我有一个csv文件,其中包含我从Genius那里获得的歌词。现在,我正在准备数据。我有两列“歌曲”和“艺术家”。在“歌曲”列中,我有很多信息:标题,专辑,年份,歌词和URL。我需要将“歌曲”列分为5列。

enter image description here

然后我尝试像这样用逗号分割数据:

df = pd.read_csv('output.csv', header=None)

df = pd.DataFrame(df[0].str.split(',').tolist())

但是使用此代码,我得到了122列,因为一直以来我在歌词中有一个逗号,都是在其他列中创建:

enter image description here

我想我必须将我所有的歌词都放在双引号中,然后如果用逗号分开,则完整的歌词将保留在单列中。

有人知道我该怎么做吗?

添加1个数据样本:

歌曲,艺术家 “ {'title”:'Berzerk','album':'The Marshall Mathers LP 2','year':'2013-08-27','lyrics':'[Verse 1] \ nNow this shit \'s即将开始,这个聚会看起来很怪异\ n让我们回到直线嘻哈,从头开始\ n我要血腥这首曲子,大家回来\ n这就是为什么我的笔需要一块垫子,\\\\\\\\\\\\\的因为的的情况\ n就像我上瘾时一样,\\我会\\踢它\\\就像魔术师一样,批评家我转向\ nGot \'仍然在栅栏是否要纠察队员\ n但是当我告诉他们“”把它粘住!“时很快就刺穿了它。\ n好恶心,我脸色苍白,等等,那是我的色素\ n \'回去火腿,雅布斯,向肯德里克大喊大叫\ n让我们把它带回那个古老的Slim ,,子!\ nMCing的艺术与达·芬奇和MC任天堂混在一起\ n而且我不是说Stimpy的朋友, ch子\ n由于您以为体育是体育馆,所以成为了公共敌人,bit子\ n \ n [合唱前] \ n把鞋子脱下来,放下头发\ n(然后发疯)整夜\ n长出胡须,很奇怪出来\ n(然后发疯k)整夜\ n \ n [合唱1] \ n我们要晃晃这座房子,直到我们将其撞倒为止\ n所以要大声调大音量\ n \'直到混乱不堪,直到AM \ n ,宝贝,像K-Fed一样\ n然后放开自己,放开自己\ n在踢水桶之前说““ Fuck it!”“ \ n生命太短暂,不容忍亡\\所以每个人,每个人, \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\-\\ \ \ _已标记过卡其色,耐克鞋酥脆新鲜,系紧了鞋带\ n所以我想这不是须后水\ n还是使科隆变得有些晕厥\ n另外,我出现了一件比湿漆还新鲜的外套\ n所以如果爱是一场国际象棋比赛,请检查伴侣\ n但是女孩,你的身体\' s bangin \',让我跳进去,当当,bang-bang \ n是siree''Bob \',我想的是同一个\ n所以快来上这只小孩子的石头,,着大da,当当\ nPow-ppp-pow,chica,pow,chica,wow-wow \ n让您的gal吹动阀门,阀门阀门\ n不会减速,扔掉毛巾,毛巾毛巾\ n把它哑巴下来,我不知道如何,呵呵,如何\ n至少我知道我不知道\ n问题是,你的笨蛋足够聪明以至于感到愚蠢吗?\ n希望如此,现在……\ n \ n [合唱前] \ n踢脱鞋,整夜整晚\ n(发疯)\ n整整整整长出胡须\ n(发疯)整晚\ n \ n [合唱2] \ n我们要晃晃这座房子,直到我们把它敲下来\ n所以要大音量\ n \'直到它变成混乱的声音\'直到AM \ n所以要像疯了一样把低音拉起来\ n然后放开自己,放开自己\ n说“ “快干!””在我们踢水桶之前\ n生活太短暂,不容忍亡\ n所以每个人,每个人,狂奔,拿到您的黑胶!\ n \ n [从头开始] \ n \ n [第3节] \ n他们说爱就像发泡胶中的止咳糖浆一样有力\ n我只知道我睡着了就醒了,因为那是蒙特卡罗\ n和丑陋的卡戴珊(Kardashian),拉玛(Lamar)在一起,哦\ n抱歉,我们都把门槛定得很低\ n远虽然已经有了硬性毒品,但那已经过去了\ n但是我做了足够的可待因,将Future推向了明天\ n而且女孩,我没有钱无聊行\ n但是我正试着找到一种让你一个人的方法:汽车注意\ n哦,马歇尔·马瑟斯\ n满嘴的Shithead,拿起肥皂泡的肥皂\ nKangol和无情的货物\ nGirl,你\ 're fixin \'让你的心碎\ n不要荒唐,女士,你的鸟脑,宝贝\ n自Birdman以来,我不会给任何人打电话,除非你是燕子\ nWord,Rick ? (单词,男人,您听说过)\ n但是,不要气our,女孩\ n除非您脚趾被卡住,否则这就是您的果酱\ n \ n [合唱前] \ n脱鞋,放下头发\ n (整晚发疯,\ n发疯\ n(整晚发疯,发呆)\ n \ n [合唱1] \ n我们要晃晃这座房子,直到我们把它撞倒\ n因此请变大音量\ n \'直到混乱为止。\ n所以,宝贝,像K-Fed一样\ n然后放开自己,放开自己\ n在说““ Fuck it!”“之前我们踢了水桶\ n生命\太短了,不能挣扎\ n所以每个人,每个人,发疯,抓住你的小瓶,是的,'image':'https://images.genius.com/a47bb228d28fd8a0e6e73abfabef7832.1000x1000x1.jpg'}“,Eminem

1 个答案:

答案 0 :(得分:0)

尝试一下。

import ast

import pandas as pd

raw = pd.read_csv("output.csv")
raw["songs"] = raw["songs"].apply(lambda x: ast.literal_eval(x))
songs = raw["songs"].apply(pd.Series)
result = pd.concat([raw[["artist"]], songs], axis=1)

result.head()