Python:复制panda并在一个步骤中替换特定的列值

时间:2018-04-28 22:42:53

标签: python python-3.x pandas

如何创建新数据框并使用单个语句替换特定列中的值

说我有以下内容:

function askFor() {
  return Number(prompt("Give me a number and I'll tell you it's square-root."));
}

function sqrtUserNum() {
  let userNum;
  do {
    userNum = askFor();

    if (isNaN(userNum)) {
      alert(NaN);
    } else {
      alert(Math.sqrt(userNum))
    }    
  } while (isNaN(userNum));
}
sqrtUserNum();

我可以用两个来做:

import pandas as pd
import numpy as np

student_ids = ['abc123', 'def321', 'qwe098', 'rty135']
extra_junk  = ['whoa', 'hey', 'don\'t touch me', 'junk']
gpas        = ['3.1', 'junk', 'NaN', '2.75']
aa          = np.array([student_ids, extra_junk, gpas]).transpose()

df = pd.DataFrame(data= aa, columns=['student_id', 'extra_junk', 'gpa'])

>>> df
  student_id      extra_junk   gpa
0     abc123            whoa   3.1
1     def321             hey  junk
2     qwe098  don't touch me   NaN
3     rty135            junk  2.75

2 个答案:

答案 0 :(得分:3)

使用df.replace

的嵌套词典语法
app.AppKt.isDebugException(this)

来自文档:

  

嵌套字典,例如{'a':{'b':nan}},如下所示:在列'a'中查找值'b'并将其替换为nan。

请注意,使用df2 = df.replace({'gpa':{'junk':'NaN'}}) 会将其替换为字符串。如果您希望它是实际'NaN',请使用NaN

答案 1 :(得分:2)

您可以使用assign创建副本并进行替换。

df2 = df.assign(gpa = df.gpa.replace('junk', 'NaN'))
df2

输出:

  student_id      extra_junk   gpa
0     abc123            whoa   3.1
1     def321             hey   NaN
2     qwe098  don't touch me   NaN
3     rty135            junk  2.75