【问题标题】:Replacing values of an entire column via Python通过 Python 替换整个列的值
【发布时间】:2020-10-26 17:32:18
【问题描述】:

我正在使用小于以下大小的数据库

data.shape
(18701954, 12)

此数据库中的一列包含月份描述,

data.PERIOD_DESC.unique()
array(['Apr-19', 'May-19', 'Jun-19', 'Jul-19', 'Aug-19', 'Sep-19',
   'Oct-19', 'Nov-19', 'Dec-19', 'Jan-20', 'Feb-20', 'Mar-20',
   'Apr-20', 'May-20'], dtype=object)

我想用“月份描述”将列替换为“数字月份”值并使用以下代码

data = data.replace(['Apr-19', 'May-19', 'Jun-19', 'Jul-19', 'Aug-19', 'Sep-19','Oct-19', 'Nov-19', 'Dec-19', 'Jan-20', 'Feb-20', 'Mar-20','Apr-20', 'May-20'],[201904, 201905, 201906, 201907, 201908, 201909, 201910,201911, 201912, 202001, 202002, 202003, 202004, 202005])

现有代码需要相当长的时间。有没有其他方法可以以不同的方式完成这项任务(时间更短)。

我已经考虑了下面的链接,但我认为我已经在做建议的事情了。 Replace string/value in entire DataFrame

【问题讨论】:

  • 你使用的是 numpy 还是 pandas?
  • 嗨 Ann Zen,主要是熊猫。但在整个代码中我都使用了。
  • 您对此有何疑问?
  • 嗨 Nico,我有一个代码正在替换值并保留整个数据库,所以它正在完成这项工作,但需要几分钟才能执行。但是我想知道是否有另一种方法可以更快地工作并替换所需的值并保留所有其他列。

标签: python replace


【解决方案1】:

也许您可以只对您感兴趣的列执行替换操作,因为 replace 操作目前遍历您的所有 12 列:

data['PERIOD_DESC'] = data[['PERIOD_DESC']].replace(['Apr-19', 'May-19', 'Jun-19', 'Jul-19', 'Aug-19', 'Sep-19','Oct-19', 'Nov-19', 'Dec-19', 'Jan-20', 'Feb-20', 'Mar-20','Apr-20', 'May-20'],[201904, 201905, 201906, 201907, 201908, 201909, 201910,201911, 201912, 202001, 202002, 202003, 202004, 202005])

【讨论】:

  • 嗨,结果输出只有特定的列,所以不能使用这个。 'raw_data.shape - (18701954, 1)'
  • 我在声明中仍然使用df,而不是data。这只会更改data 中的一列,因此调用data 应该仍然包含所有列。你能显示输出吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-13
  • 1970-01-01
  • 2021-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多