我有一個大量的原始資料檔案info.txt:
1 A B F I
2 R S
3 D K L O Q T
...
999998 C X Y Z
999999 D E L
1000000 A Z
由一個int后跟一個或多個str值組成,全部由空格分隔。我想檢索具有以下格式的pandasDataFrame df:
number letters
1 [A, B, F, I]
2 [R, S]
3 [D, K, L, O, Q, T]
...
999998 [C, X, Y, Z]
999999 [D, E, L]
1000000 [A, Z]
我執行的是以下內容:
df = pd.read_csv(r"../info.txt", header=None)
df.columns = ['number']
df[['number','letters']] = df["number"].str.split(" ", 1, expand=True)
for i in range(len(df)):
df['letters'][i] = df['letters'][i].split()
這就是訣竅。問題是,由于它的大小,該功能只需要不到兩分鐘的時間。
花費最多時間的是for回圈,將每一行的letters字串轉換為陣列的操作。有沒有更有效的格式化方式,甚至在閱讀info.txt?
(我已經探索過以前的問題,例如this和this,但我無法將它們完全應用到我的資料中。)
uj5u.com熱心網友回復:
讓我們優化您的代碼:
s = pd.read_csv('../info.txt', header=None)[0].str.split().str
df_out = pd.DataFrame({'number': s[0], 'letters': s[1:]})
print(df_out)
number letters
0 1 [A, B, F, I]
1 2 [R, S]
2 3 [D, K, L, O, Q, T]
3 999998 [C, X, Y, Z]
4 999999 [D, E, L]
5 1000000 [A, Z]
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/446223.html
