如果另一列包含特定字符串,Python Pandas 如何更新列

标签 python pandas dataframe lambda

我有一个数据框,我想用 MaxP 中的值替换 MinP 中的值,前提是 MaxP 有 +/- [然后我将删除 +/- 并转换为数字]

我的代码有点工作,但是当 Maxp 没有 +/- 时它在 MinP 中放置一个 0 相反我想保留 MinP 的值(如果有的话)

import pandas as pd 
df = pd.DataFrame({
    'MinP':['0','','-10','',],
    'MaxP':['20','15','12','+/-20']})

print(df)

df['MinP'] = df['MaxP'].apply(lambda x: df['MaxP'] if '+/-' in x else df['MinP'])
print(df)

    MinP   MaxP
0    0     20
1          15
2  -10     12
3       +/-20
    MinP   MaxP
0    0     20
1    0     15
2    0     12
3   20  +/-20

我还玩过: df.loc[df['MinP']] = np.where(df.MaxP.str.contains("+/-"), df['MaxP'],df.MinP) 但没有得到任何地方。

还有其他想法吗?

最佳答案

你可以使用 str.contains + numpy.where :

df['MinP'] = np.where(df.MaxP.str.contains('+/-', regex=False), df.MaxP, df.MinP)
print(df)

输出

    MinP   MaxP
0      0     20
1            15
2    -10     12
3  +/-20  +/-20

请注意,您必须使用 regex=False 以避免模式被解释为正则表达式。

关于如果另一列包含特定字符串,Python Pandas 如何更新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58417322/

相关文章:

python - 如何在矩形边界外白化 matplotlib pyplot 图像

python - 替换数据框中的定位值

python - 将数据框转换为元组列表

python - Dataframe 按小时和最大日期过滤行

python - 如果列中存在匹配值,则使用另一个数据帧注释一个数据帧

数据框作为 torchtext 中的数据源

python - 使用字符值在 Pandas 中创建新行

python - 如何禁用Python警告?

python - 为什么 import * 不运行导入的代码?

python - 将 json 列映射到 Pandas 数据框列