【问题标题】:Pandas : While adding new rows, its replacing my existing dataframe values? [duplicate]Pandas:在添加新行时,它会替换我现有的数据框值吗? [复制]
【发布时间】:2020-07-13 08:54:01
【问题描述】:
import pandas as pd

data = {'term':[2, 7,10,11,13],'pay':[22,30,50,60,70]}
df = pd.DataFrame(data)
 pay  term
0   22     2
1   30     7
2   50    10
3   60    11
4   70    13

df.loc[2] = [49,9]
print(df)

  pay  term
0   22     2
1   30     7
2   49     9
3   60    11
4   70    13

预期输出:

   pay  term
0   22     2
1   30     7
2   49     9
3   50    10
4   60    11
5   70    13

如果我们运行上面的代码,它将替换索引 2 处的值。我想将具有上述所需值的新行添加到我现有的数据框中,而不替换现有值。请提出建议。

【问题讨论】:

  • df.loc[len(df), :] = [49, 9]。这有帮助吗?

标签: python pandas


【解决方案1】:

您无法通过将值分配给df.loc[2] 来直接插入新行,因为它会覆盖现有值。但是您可以将数据框分成两部分,然后将这两部分与第三行连接起来插入。

试试这个:

new_df = pd.DataFrame({"pay": 49, "term": 9}, index=[2])
df = pd.concat([df.loc[:1], new_df, df.loc[2:]]).reset_index(drop=True)
print(df)

输出:

   term  pay
0     2   22
1     7   30
2     9   49
3    10   50
4    11   60
5    13   70

【讨论】:

  • 这是this 的精确复制。老实说,我个人觉得整个问题都是一个骗局。通过一点努力和研究,OP 可以很容易地找到他的答案。也许这只是我?
  • @是的,这个问题应该被标记为重复。
【解决方案2】:

那是因为 lociloc 方法从数据框中引入了已经存在的行,您通常会通过在最后一行附加一个值来插入。

要解决这种情况,您首先需要拆分数据帧,附加您想要的值,与第二个拆分连接,最后重置索引(以防您想继续使用整数)

#location you want to update
i = 2

#data to insert
data_to_insert = pd.DataFrame({'term':49, 'pay':9}, index = [i])

#split, append data to insert, append the rest of the original
df = df.loc[:i].append(data_to_insert).append(df.loc[i:]).reset_index(drop=True)

请记住,切片运算符将起作用,因为索引是整数。

【讨论】:

    【解决方案3】:

    一种可能的方法是在索引中准备一个空槽,添加行并根据索引进行排序:

    df.index = list(range(2)) + list(range(3, len(df) +1))
    df.loc[2] = [49,9]
    

    它给出:

       term  pay
    0     2   22
    1     7   30
    3    10   50
    4    11   60
    5    13   70
    2    49    9
    

    是时候排序了:

    df = df.sort_index()
    
       term  pay
    0     2   22
    1     7   30
    2    49    9
    3    10   50
    4    11   60
    5    13   70
    

    【讨论】:

      猜你喜欢
      • 2020-10-13
      • 2023-03-22
      • 1970-01-01
      • 2019-11-17
      • 2014-05-04
      • 2021-02-27
      • 1970-01-01
      • 2017-02-07
      • 2017-12-10
      相关资源
      最近更新 更多