Python:通过多个分隔符将字符串拆分为两列

Python:通过多个分隔符将字符串拆分为两列,python,pandas,split,Python,Pandas,Split,我正在从csv文件导入数据,我想将列“topThemes”拆分为一个包含两列的数组/数据框。 在第一列中,我想知道主题的名称(例如生物学),在第二列中,我想知道它的相关分数(例如62)。 导入列时,它以以下格式存储: Biology: 62\n Economics: 12\n Physics: 4\n Chemistry: 8\n and so on. 我的当前代码和错误如下所示。 代码: 错误: AttributeError("'Series' object has no attribute

我正在从csv文件导入数据,我想将列“topThemes”拆分为一个包含两列的数组/数据框。
在第一列中,我想知道主题的名称(例如生物学),在第二列中,我想知道它的相关分数(例如62)。
导入列时,它以以下格式存储:

Biology: 62\n
Economics: 12\n
Physics: 4\n
Chemistry: 8\n
and so on.
我的当前代码和错误如下所示。

代码:

错误:

AttributeError("'Series' object has no attribute 'split'")
正在导入的CSV文件:

我希望它看起来怎么样:


感谢您的帮助/回复。

指定要与
sep
一起使用的分隔符,以及
read\u csv()函数的
name
列名:

df = pd.read_csv(r'myfilelocation', sep=':', names=['topThemes', 'score'])
此处的文档:

哦,我现在看到了您的源CSV文件…
可能有一种更简洁的方法可以用更少的步骤完成这项工作,但我认为这会产生您所请求的输出:

data = pd.read_csv(r'myfilelocation', usecols=['topThemes'])
data = pd.DataFrame(data['topThemes'].str.split('\n').values.tolist()).stack().to_frame(name='raw')

df = pd.DataFrame()
df[['topTheme', 'score']] = data['raw'].apply(lambda x: pd.Series(str(x).split(":")))
df.dropna(inplace=True)

欢迎来到SO!已在共享工作表上禁用复制。为什么不简单地将原始CSV放在问题本身中,让其他人更容易提供帮助?更好的是,提供创建所需df的代码,假设文件没有问题。谢谢。对不起,这是我第一次上这个网站。我现在看看能不能做到,谢谢。编辑:我不知道如何将原始CSV添加到帖子中,但我允许复制和下载文件,谢谢。我假设导致错误的
split()
是第二个,因此
df['topThemes']
必须返回
系列
Series
是一个iterable,所以如果您只是去掉第二个
split()
,会发生什么呢?(免责声明,我从未使用过熊猫,也很少使用python。)请给出一个简短的解释:)
data = pd.read_csv(r'myfilelocation', usecols=['topThemes'])
data = pd.DataFrame(data['topThemes'].str.split('\n').values.tolist()).stack().to_frame(name='raw')

df = pd.DataFrame()
df[['topTheme', 'score']] = data['raw'].apply(lambda x: pd.Series(str(x).split(":")))
df.dropna(inplace=True)