【问题标题】:Renaming single index in Pandas在 Pandas 中重命名单个索引
【发布时间】:2017-06-03 22:57:00
【问题描述】:

我有一个 Pandas 数据框,其中索引是参与社会学测试的受访者的数字主题 ID。

基本上,这个问题有两个方面。

一)。如何重命名 Pandas DataFrame 中的单个重复索引?

部分数据如下(第一列为索引):

subject build   gender_response
7   5.0.6.0 Female
5   5.0.6.0 Male
4   5.0.6.0 Male
3   5.0.6.0 Female
3   5.0.6.0 Female
1   5.0.6.0 Male

例如,我只需要将索引之一(“3”)重置为任何其他整数。

我已经尝试了 pandas 文档中的主要功能 - http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Index.rename.html 但是,如果我将参数“Inplace”设置为 True,则没有任何反应:

master.iloc[3].rename(120, inplace=True)

如果我创建一个新变量并使用不带此参数的相同表达式,它将返回一个带有新索引的 Pandas.Series:( 但我需要将其应用于新数据帧。

master2 = master.iloc[3].rename(120)

b)。如何以其他列中的值为条件进行更改?

  subject   time    Gender  Age
7   12:30:10    Female  23
5   12:23:10    Male    18
4   12:22:17    Male    36
3   12:16:55    Female  45
3   12:16:16    Female  67
1   12:05:22    Male    28

例如,我有“时间”列进行了测试。我试图通过 Pandas 应用函数来做到这一点,比如:

time_point = pd.Timestamp(1/19/2017 12:16:55)
def filter_by_time(x):
  if x[time] == Timestamp:
     x.index.rename(120)

将其应用于数据框的行。

想法?

【问题讨论】:

  • 刚刚注意到最后一段代码有错误。
  • time_point = pd.Timestamp(1/18/2017 12:16:55) def filter_by_time(x): if x[time] == time_point: x.index.rename(120)跨度>
  • 您应该编辑您的问题以修正错误。
  • 另外,这是两个不同的问题。您可以拆分您的问题,即发布两个单独的问题吗?这就是它在 SO 上的工作方式。
  • rename 在索引上分配或更改名称属性,它不会更改标签,现有索引标签重要吗?例如,如果没有,你可以打电话给reset_index(drop=True, inplace=True)

标签: python pandas numpy


【解决方案1】:

对于查询 1,

您正在根据索引位置重命名索引。因此,您可以试试这个master.index.values[3] = 120 而不是master.iloc[3].rename(120, inplace=True)

对于查询 2, 试试这个

def filter_by_time(x):
    if x.name == "time":
        for index, value in enumerate(x):
            if value == pd.Timestamp("1/19/2017 12:16:55").strftime("%H:%M:%S"):
                master.index.values[index] = 120 
master.apply(filter_by_time)

【讨论】:

    猜你喜欢
    • 2013-11-19
    • 2016-02-28
    • 1970-01-01
    • 2016-08-16
    • 2016-09-06
    • 1970-01-01
    • 2019-01-07
    相关资源
    最近更新 更多