在 Pandas 中,当您想要每个列表都包含列时,处理包含列表列的 DataFrame 可能会很有挑战性列表元素表示为单独的行。这就是 .explode() 方法发挥作用的地方。
Pandas ≥ 0.25
对于 Pandas 0.25 及更高版本,游戏规则改变者是 .explode( ) 方法。它允许您将类似列表的列分解为单独的行,从而将其从长形式转换为宽形式。
import pandas as pd # Sample DataFrame df = pd.DataFrame({ 'trial_num': [1, 2, 3, 1, 2, 3], 'subject': [1, 1, 1, 2, 2, 2], 'samples': [list(np.random.randn(3).round(2)) for i in range(6)] }) # Explode using .explode() exploded_df = df.explode('samples') # Reset index to be monotonically increasing (optional) exploded_df = exploded_df.reset_index(drop=True) print(exploded_df) # Output: # subject trial_num sample # 0 1 1 0.57 # 1 1 1 -0.83 # 2 1 1 1.44 # 3 1 2 -0.01 # 4 1 2 1.13 # 5 1 2 0.36 # 6 1 3 1.18 # 7 2 1 -0.08 # 8 2 1 -4.22 # 9 2 1 -2.05 # 10 2 2 0.72 # 11 2 2 0.79 # 12 2 2 0.53 # 13 2 3 0.4 # 14 2 3 -0.32 # 15 2 3 -0.13
请注意,.explode() 一次对单个列进行操作。对于包含混合类型(例如列表和标量)的列,.explode() 表现得明智并保留空列表和 NaN。
以上是Pandas\' .explode()` 方法如何将基于列表的列转换为单独的行?的详细内容。更多信息请关注PHP中文网其他相关文章!