gpt4 book ai didi

python - 当某些列列表值为空时如何合并包含列表值的列?

转载 作者:太空宇宙 更新时间:2023-11-03 15:59:20 25 4
gpt4 key购买 nike

我想以这种方式合并数据框中的列:

list_A      list_B       
A, T, G G, C
B, K
C, L, AG L, AG, K
F, K

输出应该是:

list_A      list_B       list_A&B
A, T, G G, C A, T, G, C
B, K B, K
C, L, AG L, AG, K C, L, AG, K
F, K F, K

我做到了:

df['list_A&B'] = df['list_A'].astype(list) + ', ' + df['list_B'].astype(list)

而且,我得到:

     list_A    list_B            list_A&B
0 A, T, G G, C A, T, G, G, C
1 NaN B, K NaN
2 C, L, AG L, AG, K C, L, AG, L, AG, K
3 F, K NaN NaN

当其中一个列表为空时,列表的并集就会出现问题。但是,为什么呢?

然后我尝试将其联合为字符串,但现在无法删除添加的 nan:df['list_A&B'] = df['list_A'].astype(str) + ', ' + df['list_B'].astype(str)

给出:

     list_A    list_B            list_A&B
0 A, T, G G, C A, T, G, G, C
1 NaN B, K nan, B, K
2 C, L, AG L, AG, K C, L, AG, L, AG, K
3 F, K NaN F, K, nan

使用此输出,我很难删除“nan”,因为它们被报告为字符串,并且 dropna() 和 fillna() 无法使用它。

有什么建议吗!-K

最佳答案

看起来这些只是我对您迄今为止提供的数据的解释的字符串值。

步骤:

使用str.cat按行连接它们与 sep=','na_rep='' 一起处理散布在其他字符串字符中的 NaN 值,将其视为空字符。

然后,在使用 set 获取列表的唯一元素后,删除其中存在的不需要的空格,并使用 filter(None,...) 消除空字符串.

最后,连接结果列表以使其成为列表的字符串表示形式,但不包括括号。

df['list_A&B'] = df['list_A'].str.cat(df['list_B'], ',','') \
.apply(lambda x: ', '.join(list(filter(None, set(re.sub(r"\s+", "", x) \
.split(','))))))

df # df.fillna('') to get back your desired output

enter image description here

<小时/>

使用的起始DF:

df = pd.DataFrame({'list_A': ['A, T, G', np.NaN, 'C, L, AG ', 'F, K'], 
'list_B': ['G, C', 'B, K', 'L, AG, K', np.NaN]})
df

enter image description here

关于python - 当某些列列表值为空时如何合并包含列表值的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40495386/

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