在Pandas中为某些DataFrame行添加字符串
这是我在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