Python 3.x 替换熊猫系列上的模式,其中每行包含字符串列表
我想替换pandas系列中的一个模式,其中每行包含一个字符串列表。其思想是在列表中属于一行的每个字符串中搜索模式。数据集有几行,这些特定的列由字符串列表组成Python 3.x 替换熊猫系列上的模式,其中每行包含字符串列表,python-3.x,pandas,Python 3.x,Pandas,我想替换pandas系列中的一个模式,其中每行包含一个字符串列表。其思想是在列表中属于一行的每个字符串中搜索模式。数据集有几行,这些特定的列由字符串列表组成 input = {'1': [['a', 'b', 'c', 'd'], ['a', 'b', 'c', 'd'], ['a', 'b', 'c', 'd'], ['a', 'b', 'c', 'd'], ['a', 'b', 'c', 'd']]} df = pd.DataFrame(input) print(df) 现在,我想在每行的
input = {'1': [['a', 'b', 'c', 'd'], ['a', 'b', 'c', 'd'], ['a', 'b', 'c', 'd'], ['a', 'b', 'c', 'd'], ['a', 'b', 'c', 'd']]}
df = pd.DataFrame(input)
print(df)
现在,我想在每行的每个字符串列表中将所有的“a”替换为“e”。这里有一种方法
In [118]: df['1'].apply(lambda x: ['e' if v=='a' else v for v in x])
Out[118]:
0 [e, b, c, d]
1 [e, b, c, d]
2 [e, b, c, d]
3 [e, b, c, d]
4 [e, b, c, d]
Name: 1, dtype: object
另一种方式
In [119]: df['1'].apply(lambda x: map(lambda v: 'e' if v=='a' else v, x))
Out[119]:
0 [e, b, c, d]
1 [e, b, c, d]
2 [e, b, c, d]
3 [e, b, c, d]
4 [e, b, c, d]
Name: 1, dtype: object
或者,在所有列上使用df.applymaplambdafunc
细节
In [120]: df
Out[120]:
1
0 [a, b, c, d]
1 [a, b, c, d]
2 [a, b, c, d]
3 [a, b, c, d]
4 [a, b, c, d]
这里有一条路
In [118]: df['1'].apply(lambda x: ['e' if v=='a' else v for v in x])
Out[118]:
0 [e, b, c, d]
1 [e, b, c, d]
2 [e, b, c, d]
3 [e, b, c, d]
4 [e, b, c, d]
Name: 1, dtype: object
另一种方式
In [119]: df['1'].apply(lambda x: map(lambda v: 'e' if v=='a' else v, x))
Out[119]:
0 [e, b, c, d]
1 [e, b, c, d]
2 [e, b, c, d]
3 [e, b, c, d]
4 [e, b, c, d]
Name: 1, dtype: object
或者,在所有列上使用df.applymaplambdafunc
细节
In [120]: df
Out[120]:
1
0 [a, b, c, d]
1 [a, b, c, d]
2 [a, b, c, d]
3 [a, b, c, d]
4 [a, b, c, d]
上述答案有效,但这一个也有效:
input = {'1': [['a', 'b', 'c', 'd'], ['a', 'b', 'c', 'd'], ['a', 'b', 'c', 'd'], ['a', 'b', 'c', 'd'], ['a', 'b', 'c', 'd']]}
df = pd.DataFrame(input)
df = df['1'].apply(lambda x: [v.replace("a", "e") for v in x])
print(df)
输出:
0 [e, b, c, d]
1 [e, b, c, d]
2 [e, b, c, d]
3 [e, b, c, d]
4 [e, b, c, d]
上述答案有效,但这一个也有效:
input = {'1': [['a', 'b', 'c', 'd'], ['a', 'b', 'c', 'd'], ['a', 'b', 'c', 'd'], ['a', 'b', 'c', 'd'], ['a', 'b', 'c', 'd']]}
df = pd.DataFrame(input)
df = df['1'].apply(lambda x: [v.replace("a", "e") for v in x])
print(df)
输出:
0 [e, b, c, d]
1 [e, b, c, d]
2 [e, b, c, d]
3 [e, b, c, d]
4 [e, b, c, d]
这里有一个使用默认值的有趣方法。也使用理解
df['1'] = [[{'a': 'e'}.get(x, x) for x in r] for r in df['1'].values.tolist()]
df
1
0 [e, b, c, d]
1 [e, b, c, d]
2 [e, b, c, d]
3 [e, b, c, d]
4 [e, b, c, d]
这里有一个使用默认值的有趣方法。也使用理解
df['1'] = [[{'a': 'e'}.get(x, x) for x in r] for r in df['1'].values.tolist()]
df
1
0 [e, b, c, d]
1 [e, b, c, d]
2 [e, b, c, d]
3 [e, b, c, d]
4 [e, b, c, d]
让我们重建数据帧
让我们重建数据帧
您好零,非常感谢,您的建议对我帮助很大!:我还尝试了压缩中的压缩+1你的意思是像[e'如果v='a'else v代表x中的v]代表df中的x['1']]一样[func_部分]代表df中的x['1']]?是的。这就是我的意思-:你好零,非常感谢你,你的建议帮助了我很多!:我还尝试了压缩中的压缩+1你的意思是像[e'如果v='a'else v代表x中的v]代表df中的x['1']]一样[func_部分]代表df中的x['1']]?是的。这就是我的意思-:我也喜欢这个-:谢谢-~~@我也喜欢这个-:谢谢-~~@皮尔斯平方