我有一个DataFrame。我想根据每个单词的长度创建一个新变量。 例如:
DataFrame:
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'])
不起作用。
答案 0 :(得分:0)
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。一系列列表,但您可以将其转换
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