让我先说一下,我是新手使用熊猫,所以我很抱歉,如果这个问题是基本的或之前已经回答过,我在网上看了,找不到我需要的东西。
我有一个由棒球队赛程组成的数据框。一些游戏已经播放,因此游戏的结果在数据帧中输入。但是,对于尚未发生的游戏,只有他们玩的时间(例如下午1:35)。
所以,我想把所有游戏的价值转换成Na。
谢谢
这里要求的是Arizona Diamondbacks的结果数据框包含
print MLB['ARI']
0 0
1 0
2 0
3 1
4 0
5 0
6 0
7 0
8 1
9 0
10 1
...
151 3:40 pm
152 8:40 pm
153 8:10 pm
154 4:10 pm
155 4:10 pm
156 8:10 pm
157 8:10 pm
158 1:10 pm
159 9:40 pm
160 8:10 pm
161 4:10 pm
Name: ARI, Length: 162, dtype: object
答案 0 :(得分:0)
无法找出任何直接解决方案,只能迭代
for i in xrange(len(MLB)):
if 'pm' in MLB.['ARI'].iat[i] or 'am' in MLB.['ARI'].iat[i]:
MLB.['ARI'].iat[i] = np.nan
如果您的实际值(1和0)也是字符串,这应该有效。如果他们是数字,请尝试:
for i in xrange(len(MLB)):
if type(MLB.['ARI'].iat[i]) != type(1):
MLB.['ARI'].iat[i] = np.nan
答案 1 :(得分:0)
更常用的方法是使用矢量化字符串方法。
http://pandas.pydata.org/pandas-docs/stable/basics.html#vectorized-string-methods
mask = MLB['ARI'].str.contains('pm') #create boolean array
MLB['ARI'][mask] = np.nan #the column names goes first
从中创建布尔数组,然后使用它来选择所需的数据。 确保列名称位于掩蔽数组之前,否则您将对数据副本执行操作,并且原始数据框不会更新。
MLB['ARI'][mask] #returns a view on MLB datafrmae, will be updated
MLB[mask]['ARI'] #returns a copy of MLB, wont be updated.