在數據幀的列有值,'abc,def,ghi'
。我想打一個這樣的數組:['abc','def','ghi']
大熊貓數據框中列有逗號字符串如何將它轉換成一個列表
-2
A
回答
1
使用str.split
:
df['col'] = df['col'].str.split(',')
樣品:
df = pd.DataFrame({'col':['abc,def,ghi','abc,def,ghi']})
df['col'] = df['col'].str.split(',')
print (df)
col
0 [abc, def, ghi]
1 [abc, def, ghi]
print (df.loc[0, 'col'])
['abc', 'def', 'ghi']
print (type(df.loc[0, 'col']))
<class 'list'>
如果從未NaN
值使用列表理解:
df['col'] = [x.split(',') for x in df['col'].values.tolist()]
print (df)
col
0 [abc, def, ghi]
1 [abc, def, ghi]
1
考慮據幀df
用隨機數,以逗號分隔的字符串。
np.random.seed([3,1415])
k = 10
df = pd.DataFrame(
np.random.choice(list('ABCD,'), (k, 20))
).sum(1).str.strip(',').str.replace(',+', ',').to_frame('col1')
df
col1
0 ADCDCCDCDACAA,ACCA,B
1 DC,DDD,DBDA,CCAC
2 A,B,CCAC,DB,C,CD,D
3 ADDBAA,DA,BD,C,AACA
4 DADBB,D,DBD,ADCAADB
5 CBCBA,CA,B,AA,CDCBDB
6 BD,D,DDB,AC,B,C,ABBA
7 C,CABBBADCD,DBCC,ACD
8 CC,A,BCAAAACBBA,BD
9 AC,A,ADBBD,BDCCDDABD
我喜歡用numpy
小號功能分裂
df.assign(col1=np.core.defchararray.split(df.col1.values.astype(str), ','))
col1
0 [ADCDCCDCDACAA, ACCA, B]
1 [DC, DDD, DBDA, CCAC]
2 [A, B, CCAC, DB, C, CD, D]
3 [ADDBAA, DA, BD, C, AACA]
4 [DADBB, D, DBD, ADCAADB]
5 [CBCBA, CA, B, AA, CDCBDB]
6 [BD, D, DDB, AC, B, C, ABBA]
7 [C, CABBBADCD, DBCC, ACD]
8 [CC, A, BCAAAACBBA, BD]
9 [AC, A, ADBBD, BDCCDDABD]
快速的小數據
%timeit df.assign(col1=np.core.defchararray.split(df.col1.values.astype(str), ','))
1000 loops, best of 3: 204 µs per loop
%timeit df.assign(col1=df['col1'].str.split(','))
1000 loops, best of 3: 327 µs per loop
%timeit df.assign(col1=[x.split(',') for x in df['col1'].values.tolist()])
1000 loops, best of 3: 210 µs per loop
沒有那麼快,大型DataA的
np.random.seed([3,1415])
k = 10000
df = pd.DataFrame(
np.random.choice(list('ABCD,'), (k, 100))
).sum(1).str.strip(',').str.replace(',+', ',').to_frame('col1')
%timeit df.assign(col1=np.core.defchararray.split(df.col1.values.astype(str), ','))
10 loops, best of 3: 19.6 ms per loop
%timeit df.assign(col1=df['col1'].str.split(','))
100 loops, best of 3: 13.5 ms per loop
%timeit df.assign(col1=[x.split(',') for x in df['col1'].values.tolist()])
100 loops, best of 3: 11.5 ms per loop
+0
@jezrael非常快! – piRSquared
相關問題
- 1. 列表的Python的熊貓數據框柱,轉換列表字符串新列
- 2. 將熊貓列轉換爲字符串
- 3. 如何將熊貓中的數字列轉換爲逗號分隔符的字符串?
- 4. 轉換整數列表轉換爲字符串只有一個逗號在Python
- 5. 如何將大熊貓數據框的所有列的數據類型轉換爲字符串
- 6. 添加逗號分隔符爲字符串的數據幀列與大熊貓
- 7. 如何將轉換應用於熊貓數據框列表?
- 8. 如何將一系列字符串從熊貓列轉換爲整數
- 9. 分組數據框中列,並轉換到字典,大熊貓
- 10. 將字符串列表轉換爲熊貓列表中的浮點數
- 11. Python的大熊貓轉換逗號分隔值的列表,數據幀
- 12. 轉換大熊貓一系列列表到數據幀
- 13. 轉換一個列表以大熊貓數據幀
- 14. 我如何轉換逗號分隔字符串轉換成列表<int>
- 15. JavaScript將字符串轉換爲文字逗號列表
- 16. 熊貓數據框 - 列轉
- 17. 如何將列名稱數組轉換爲熊貓數據框?
- 18. 如何JSON字符串的大熊貓列轉換成一個新的數據幀
- 19. 將大熊貓系列整數轉換爲字符串的最有效方法?
- 20. 從字符串列表中創建熊貓數據框
- 21. 大熊貓數據框中列的字符串中的條件更換
- 22. 轉換一個熊貓系列串
- 23. 熊貓:將所有列從字符串轉換爲數字,除了兩個?
- 24. 如何將熊貓列中的JSON數據轉換爲新列
- 25. 如何將系列轉換爲熊貓數據框
- 26. 如何將一個數據框的列從char轉換爲ascii整數? [熊貓]
- 27. 總結大熊貓數據框列表
- 28. 將逗號分隔的字符串轉換爲變量列表?
- 29. 將逗號分隔的雙字符串轉換爲列表
- 30. 使用逗號將int列表轉換爲字符串SQL Server
這給了更詳細的答案http://stackoverflow.com/questions/40784200/pandas-convert-column-to-list – bigbounty
你嘗試過這麼遠嗎? – Nathan
的可能的複製[擺脫熊貓數據幀列的列表(http://stackoverflow.com/questions/22341271/get-list-from-pandas-dataframe-column) –