gpt4 book ai didi

python - 通过从现有列中过滤来创建新变量

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

我有一个数据框。我想根据每个单词的长度创建一个新变量。例如:

数据框:

            base
0 d4 d5 c4
1 d4 Nc6 e4
2 e4 e5 d3
3 d4 d5 Nf3

所需的数据帧:

            base       len2          len3
0 d4 d5 c4 d4 d5 c4
1 d4 Nc6 e4 d4 e4 Nc6
2 e4 e5 d3 e4 e5 d3
3 d4 d5 Nf3 d4 d5 Nf3

我是Python新手,这是我尝试过的

df['len2'] = filter(len(df['base'].str.split()) == 2, df['base'])

不起作用。

最佳答案

df = pd.DataFrame({'base': ['d4 d5 c4', 'd4 Nc6 e4']})
df['len2'] = df['base'].str.split().apply(lambda x: [i for i in x if not i[0].isupper()])
df['len3'] = df['base'].str.split().apply(lambda x: [i for i in x if i[0].isupper()])

输出列的类型是 pd.Series 列表,但您可以转换它们

df['len3'] = df['base'].str.split().apply(lambda x: " ".join([i for i in x if i[0].isupper()]))

如果你的条件是每个元素的长度等于2那么

df['len3'] = df['base'].str.split().apply(lambda x: " ".join([i for i in x if len(i) != 2]))

base len3
0 d4 d5 c4
1 d4 Nc6 e4 Nc6

关于python - 通过从现有列中过滤来创建新变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57815687/

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