如何解决如何有条件地将 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 字符串而不遍历每个值?
解决方法
您可以将 .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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。