[英]How to solve IndexError: list index out of range?
我有以下代碼:
s = output.set_index('name')['col1']
df = pd.DataFrame(s.values.tolist(), index=s.index).stack().reset_index()
第二行引發錯誤:
IndexError: list index out of range
我只想了解它為什么會發生?
s.index
返回:
Index(['100100', '100200', '100300'], dtype='object', name='name')
s.values.tolist()
返回:
[
[],
[],
[]
]
更新:
這是s
一個例子。 這應該是一個起點。
col1
a []
b []
c []
d ["c1","c2"]
當col1
在所有行中為空時,代碼在df = pd.DataFrame(s.values.tolist(), index=s.index).stack().reset_index()
。
這段代碼對我來說失敗了(python 3.7和pandas 0.24.2):
s = pd.DataFrame({'name':['a','b','c'],
'col1': [[],[],[]]}).set_index('name')
s.col1.apply(pd.Series).stack().dropna().reset_index()
如果所有col1值都是[],則目標是獲取空DataFrame,或者使用以下DataFrame(對於上面顯示的s
示例):
df =
name col1
d c1
d c2
s.values.tolist()
給出[[], [], [], ['c1', 'c2']]
,這不是你想要的。 我認為你需要pd.Series
而不是tolist
:
s = pd.DataFrame({'name':['a','b','c','d','e'],
'col1': [[],[],[],['c1','c2'],['d','e','f']]}).set_index('name')
s.col1.apply(pd.Series).stack().dropna().reset_index()
輸出:
+---+------+---------+----+
| | name | level_1 | 0 |
+---+------+---------+----+
| 0 | d | 0 | c1 |
| 1 | d | 1 | c2 |
| 2 | e | 0 | d |
| 3 | e | 1 | e |
| 4 | e | 2 | f |
+---+------+---------+----+
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.