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

2024-06-06 03:49:58 发布

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

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

Biology: 62\n
Economics: 12\n
Physics: 4\n
Chemistry: 8\n
and so on.

我的当前代码和错误如下所示。

代码:

df = pd.read_csv(r'myfilelocation')

split = [line.split(': ') for line in df['topThemes'].split('\n')]

错误:

AttributeError("'Series' object has no attribute 'split'")

正在导入的CSV文件:

My csv file

我希望它看起来怎么样:

Ideal format

感谢您的帮助/回复


Tags: 文件csv数据代码名称df主题格式
1条回答
网友
1楼 · 发布于 2024-06-06 03:49:58

指定要与sep一起使用的分隔符,以及与read_csv()函数的names一起使用的列名:

df = pd.read_csv(r'myfilelocation', sep=':', names=['topThemes', 'score'])

此处的文档:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html

哦,我现在看到了您的源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)

相关问题 更多 >