Pandas 如何在series中拆分(展开)一行
如果series对象中的某些元素是列表,那么我们可以将这些列表元素拆分成series对象的多行。拆分即将列表展开成行。
通过使用pandas series.explode()方法可以轻松完成这个转换。该方法用于将series对象的类似于列表的元素转换为行,并且这些行将复制索引。
ignore_index是该方法的唯一参数,它接受布尔值,False是默认值,而True表示结果的索引将从0到n-1进行标记。
示例1
下面的示例中,我们将看到series.explode()方法如何将series对象的类似于列表的元素转换为行。
# importing pandas package
import pandas as pd
# create a nested list
L = [1, 2, [4, 8, 9, 2], [], ["a", "b", "c"]]
# Create a pandas series using the list
series = pd.Series(L)
# unnest the series using explode() method
result = series.explode()
print("Original Series:")
print(series)
print("Result:", result)
解释
这里我们用一个Python嵌套列表创建了一个系列对象,然后应用了explode()方法。
输出
输出如下:
Original Series:
0 1
1 2
2 [4, 8, 9, 2]
3 []
4 [a, b, c]
dtype: object
Result:
0 1
1 2
2 4
2 8
2 9
2 2
3 Nan
4 a
4 b
4 c
dtype: object
在上面的输出块中,我们可以注意到元素4、8、9、2被转换为结果序列对象的新行。此外,在索引位置3上有一个空的类似列表的元素,结果行中的该位置将有np.nan。 示例2: 在下面的示例中,我们将看到series.explode()方法如何将series中的列表、元组对象转换为行。
# importing pandas package
import pandas as pd
# Create a pandas series
series = pd.Series([(0, 1, 2,), list("xyz"), (5, 6, 7)])
# unnest the series using explode() method
result = series.explode()
print("Original Series:")
print(series)
print("Result:", result)
解释
最初,我们使用一个包含3个元素(元组、列表)的Python列表创建了一个Series对象,然后应用了explode()方法。
输出
输出如下:
Original Series:
0 (0, 1, 2)
1 [x, y, z]
2 (5, 6, 7)
dtype: object
Result:
0 0
0 1
0 2
1 x
1 y
1 z
2 5
2 6
2 7
dtype: object
在上面的输出块中,我们可以注意到系列对象的元素已成功转换为结果系列对象的新行。