gpt4 book ai didi

python - 如何在Python中获取每个有序行的前3个元素

转载 作者:行者123 更新时间:2023-12-03 23:26:02 24 4
gpt4 key购买 nike

我有一个数据类型为字符串的 DataFrame,如下所示:


ID
变量 1
变量2
变量3
变量 4
变量5


1
一种

C
D


2


C
D

3

C
D


4
一种

C




我想为每一行选择前 3 个元素,如下所示:


ID
变量 1
变量2
变量3
变量 4
变量5
无功6


1
一种

C
D

甲、乙、丙

2


C
D

乙、丙、丁

3

C
D

C、D、E

4
一种

C


高手

最佳答案

尝试这个:

df['Var6'] = df.apply(lambda x: [y for y in x.values if y != ''][:3], axis=1)
结果df:
  Var1 Var2 Var3 Var4 Var5       Var6
1 A B C D E [A, B, C]
2 B C D [B, C, D]
3 C D E [C, D, E]
4 A C E [A, C, E]
如果您希望结果为逗号分隔的字符串,请进一步使用:
df['Var6'] = df['Var6'].str.join(', ')
结果df:
  Var1 Var2 Var3 Var4 Var5     Var6
1 A B C D E A, B, C
2 B C D B, C, D
3 C D E C, D, E
4 A C E A, C, E
如果您想一步完成,请使用:
df['Var6'] = df.apply(lambda x: ','.join([y for y in x.values if y != ''][:3]), axis=1)
编辑
我解释了 ID当我提供答案时,在示例数据中作为行索引,特别是当 OP 提到 DataFrame 的数据类型为字符串时,当她从每行中选取前 3 个元素时,标记为 ID 的列中的值没有被选中。
但是,我看到其他一些答案处理过 ID作为数据列。为了完整起见,我想添加代码以防万一 ID是一个数据列,但仍然不会为每行的前 3 个元素选择其值。
万一ID是一个数据列,但不被选取:稍微调整代码如下:
df1 = df.set_index('ID')      # temporarily set column ID as index
# same code as my main answer except to replace df by df1
df1['Var6'] = df1.apply(lambda x: ','.join([y for y in x.values if y != ''][:3]), axis=1)
df = df1.reset_index() # reset the index to move ID back to data column

关于python - 如何在Python中获取每个有序行的前3个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66625401/

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