如何将系列扩展到数据框

问题描述

假设我们有一个像这样的数据框:

data = pd.DataFrame({'num': [1,2,3],'tags': [['toto','tata','titi'],['one','two','three'],['he','she','us']]})

数据


  num   tags
0   1   [toto,tata,titi]
1   2   [one,two,three]
2   3   [he,she,us]

我不明白为什么 data.tags.apply(pd.Series) 可以将 data.tags 扩展为自己的数据框

data.tags.apply(pd.Series)

    0      1        2
0   toto  tata   titi
1   one   two    three
2   he    she    us

而DataFrame不能!

data.tags.apply(pd.DataFrame) 

0           0
0  toto
1  tata
2  titi
1           0
0  one
1  two
2  three
2           0
0  he
1  she
2  us
Name: tags,dtype: object

它是如何工作的?

解决方法

在这种情况下,您可以将 document.getElementById('search').addEventListener( 'submit',async e => { e.preventDefault(); const searchResult = await getDetails(); // Do something to show the results,populate #results const resultsElement = document.getElementById('results'); resultsElement.innerText = JSON.stringify(searchResult); }); 视为按行遍历 apply() 列。因此,应用 tags 将使每个列表成为“水平”系列。然后,由于您有这些“水平”系列的“垂直”列,因此您只剩下一个数据框。相反,应用 pd.Series 将使每个列表成为“垂直”数据帧,因此“垂直”数据帧的“垂直”列将为您提供一系列数据帧。

希望从“水平”和“垂直”的角度考虑它有助于对正在发生的事情的直觉有所帮助。