簡體   English   中英

Python:用一個以上的分隔符將字符串分成兩列

[英]Python: Split string into two columns by more than one seperator

我正在從 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 文件:

我的 csv 文件

我希望它看起來如何:

理想格式

感謝您的任何幫助/回復。

使用read_csv() function 的names指定要與sep一起使用的分隔符和列名稱:

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

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

哦,我現在看到你的源 CSV 文件...
可能有一種更簡潔的方法可以在更少的步驟中執行此操作,但我認為這會產生您請求的 output:

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM