【问题标题】:Python - If statement errorPython - 如果语句错误
【发布时间】:2017-08-09 10:58:20
【问题描述】:

这是我的数据集:

 offerid category countty   browserid   devid   click
0   887235  17714   e   Firefox        NaN      0
1   178235  21407   b   Mozilla        Desktop  0
2   518539  25085   a   Edge           NaN      0
3   390352  40339   c   Firefox       Mobile    0
4   472937  12052   d   Mozilla       Desktop   0

对于每次 Firefox 出现在“browserid”列中,我需要用“Mobile”填充“devid”列中的“NaN”。这是我为此编写的代码。

if data['browserid'] == 'Firefox' :
    data['devid'].fillna('Mobile', inplace=True)

我面临以下错误:

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

任何帮助将不胜感激!

【问题讨论】:

标签: python data-science


【解决方案1】:
from io import StringIO
import pandas as pd

TESTDATA=StringIO(""" offerid category countty browserid devid click
0 887235 17714 e Firefox NaN 0
1 178235 21407 b Mozilla Desktop 0
2 518539 25085 a Edge NaN 0
3 390352 40339 c Firefox Mobile 0
4 472937 12052 d Mozilla Desktop 0""")

df = pd.read_csv(TESTDATA, sep=" ")
df = df.iloc[:,1:]

df.loc[df['browserid'] == 'Firefox','devid'] = df.loc[df['browserid'] == 'Firefox','devid'].fillna('Mobile')

【讨论】:

  • 非常感谢!这非常有效。因为我是新手,所以无法支持​​您的答案,但再次感谢:D
【解决方案2】:

另外,你可以这样做:

data.loc[data.browserid == "Firefox",'devid'] = 0 (or "NaN")

但您的问题的答案是您将列与字符串进行比较...

【讨论】:

  • 非常感谢!这行得通。感谢您抽出宝贵时间
  • 我已经对你的回答投了赞成票 Paddy :) 我是 Stack 的新手,显然我的投票还不算数:/
  • 你必须选择答案,检查投票按钮下的标记符号。无论如何,我很乐意提供帮助:)
【解决方案3】:
   offerid  category countty browserid    devid  click
0   887235     17714       e   Firefox   Mobile      0
1   178235     21407       b   Mozilla  Desktop      0
2   518539     25085       a      Edge      NaN      0
3   390352     40339       c   Firefox  Mobile       0
4   472937     12052       d   Mozilla      NaN      0

Read data using pandas
import pandas as pd
df = pd.read_csv('stack_overflow.csv')
df.loc[(df['browserid']=='Firefox')&(df.devid.isnull()),'devid'] ='Mobile'

output 
   offerid  category countty browserid    devid  click
0   887235     17714       e   Firefox   Mobile      0
1   178235     21407       b   Mozilla  Desktop      0
2   518539     25085       a      Edge      NaN      0
3   390352     40339       c   Firefox   Mobile      0
4   472937     12052       d   Mozilla      NaN      0

【讨论】:

  • 谢谢!这有帮助:)
猜你喜欢
  • 2018-12-03
  • 2020-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多