将列值强制转换为列表以保持顺序



我有以下数据帧:

df1 = pd.DataFrame({'Parent': ['Stay home', "Stay home","Stay home", 'Go swimming', "Go swimming","Go swimming"],
'Child': ['Severe weather', "Severe weather", "Severe weather", 'Not Severe weather', "Not Severe weather", "Not Severe weather"],
'Child1':   ["Extreme rainy", "Extreme windy",   "Severe snow", "Sunny", "some windy", "No snow"]
})

我想通过child列将Child1列强制转换为列表组

所以我正在尝试以下代码:

def cast_to_list(df, col):
return df.groupby('Child')[col].apply(list).tolist()
list5=cast_to_list(df1, 'Child1')
list5

结果:

[['Sunny', 'some windy', 'No snow'],
['Extreme rainy', 'Extreme windy', 'Severe snow']]

预期结果保持Child1列值的顺序:

因此,预期结果如下:

[['Extreme rainy', 'Extreme windy', 'Severe snow'],
['Sunny', 'some windy', 'No snow']]

有什么想法吗?

groupby:中使用sort=False

def cast_to_list(df, col):
return df.groupby('Child', sort=False)[col].apply(list).tolist()
list5 = cast_to_list(df1, 'Child1')
list5

输出:

[['Extreme rainy', 'Extreme windy', 'Severe snow'],
['Sunny', 'some windy', 'No snow']]

最新更新