在Pandas中为某些DataFrame行添加字符串

1 投票
1 回答
3698 浏览
提问于 2025-04-30 03:04

这是我在StackOverflow上的第一个问题!请多多包涵 :)

我想在一个数据表(DataFrame)中的某些行添加一些文字。原始的数据表看起来是这样的:

In [1]: import pandas as pd

In [2]: df = pd.DataFrame({'Name and rooms' : ['Excalibur: 1 room','John: 2 rooms','1 room','Lucas: 5 rooms','4 rooms','Jeremy: 1 room']})

In [3]: df
Out[3]: 
      Name and rooms
0  Excalibur: 1 room
1      John: 2 rooms
2             1 room
3     Lucas: 5 rooms
4            4 rooms
5     Jeremy: 1 room

你可以看到,有些行的名字是缺失的。我想在那些没有名字的行(在这个例子中是第2行和第4行)添加一些固定的字符串(比如“无论如何: ”,不管是什么字符串)。最终的数据集应该是这样的:

In [11]: df
Out[11]: 
      Name and rooms
0  Excalibur: 1 room
1      John: 2 rooms
2      Whatever: 1 room
3     Lucas: 5 rooms
4      Whatever: 4 rooms
5     Jeremy: 1 room

我对pandas/python还很陌生,所以任何帮助都非常感谢。

谢谢!

暂无标签

1 个回答

2

使用向量化的 str 方法 contains 来创建一个布尔掩码,然后用取反操作符 ~,把这个掩码传给 loc,并把你的字符串加到当前值前面:

In [83]:

df.loc[~df['Name and rooms'].str.contains(':'),'Name and rooms'] = 'Whatever: ' + df['Name and rooms']
df
Out[83]:
      Name and rooms
0  Excalibur: 1 room
1      John: 2 rooms
2   Whatever: 1 room
3     Lucas: 5 rooms
4  Whatever: 4 rooms
5     Jeremy: 1 room

撰写回答