gpt4 book ai didi

python - 如何展平 Pandas 数据框列中的列表?

转载 作者:行者123 更新时间:2023-12-05 02:04:13 28 4
gpt4 key购买 nike

我有一个 pandas 数据框,其中一列 RESULT 在列表中有列表。

  ID                     RESULT
0 A [nan, ['PASS'], nan, nan]
1 B [['FAIL'], nan, nan, nan]
2 C [['PASS'], nan, nan, nan]
3 D [nan, nan, nan, nan]
4 E [nan, ['FAIL'], nan, nan]

我想让 RESULT 列成为一个平面列表。例如,第一种情况是 [nan, 'PASS', nan, nan]。最终答案应如下所示。

  ID                     RESULT
0 A [nan, 'PASS', nan, nan]
1 B ['FAIL', nan, nan, nan]
2 C ['PASS', nan, nan, nan]
3 D [nan, nan, nan, nan]
4 E [nan, 'FAIL', nan, nan]

我试图创建一个函数,但它没有将列更新为平面列表。下面是我试过的代码。

def flatten_list(mylist):
# print(mylist)
for index, value in enumerate(mylist):
if type(value) is list:
mylist[index] = value[0]
# print(mylist)
return mylist

df_bin['RESULT'] = df_bin['RESULT'].apply(flatten_list)

但如果我尝试下面的一个简单示例,它就可以工作。我想知道有什么区别。我将不胜感激任何指导。也可以使用 lambda 函数来实现相同的结果。

mylist = [nan, ['PASS'], nan, nan]
for n, i in enumerate(mylist):
if type(i) is list:
mylist[n] = i[0]
print(mylist)

最佳答案

可以使用 pandas.core 中的内部 flatten 函数来执行此操作

import pandas as pd
from pandas.core.common import flatten

df = pd.DataFrame({'ID':['A','B'],
'Result':[['nan', ['PASS'], 'nan', 'nan'], [['FAIL'], 'nan', 'nan', 'nan']]
})
df['Result'] = df['Result'].apply(lambda x: list(flatten(x)))

输出:

    ID  Result
0 A [nan, PASS, nan, nan]
1 B [FAIL, nan, nan, nan]

根据您的示例,我想这应该可行。

关于python - 如何展平 Pandas 数据框列中的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64628230/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com