如何有条件地将 Pandas DataFrame 值更改为 f 字符串?

我有一个 pandas 数据帧,我想有条件地将其值更改为字符串,而无需遍历每个值。

示例输入:

In [1]: df = pd.DataFrame(data = [[1,2],[4,5]],columns = ['a','b'])
Out[2]:
   a  b
0  1  2
1  4  5

这是我最好的尝试,但无法正常工作

df['a'] = np.where(df['a'] < 3,f'string-{df["a"]}',df['a'])

In [1]: df
Out[2]:
    a                                       b
0   string0 1\n1 4\nName: a,dtype: int64   2
1   4                                       5

所需的输出:

Out[2]:
   A         B
0  string-1  2
1  4         5

我正在使用 np.where(),因为由于实际 DataFrame 的大小,循环不可行。我使用的实际 f-string 也更复杂,并且有两个包含列名的变量,但问题是一样的。

是否有其他方法可以有条件地将 pandas 值更改为 f 字符串而不遍历每个值?

diegod3433 回答:如何有条件地将 Pandas DataFrame 值更改为 f 字符串?

您可以将 .map() 与 f-string 一起使用,如下所示:

df['a'] = df['a'].map(lambda x: f'string-{x}' if x < 3 else x)

或者,您也可以将 .loc 与字符串连接一起使用,如下所示:

df.loc[df['a'] < 3,'a'] = 'string-' + df['a'].astype(str)
#OR
df['a']=np.where(df['a'] < 3,'string-'+df['a'].astype(str),df['a'])

结果:

print(df)

          a  b
0  string-1  2
1         4  5
本文链接:https://www.f2er.com/206.html

大家都在问