【问题标题】:Python DataFrame: Why does my values change to NaN if I change the indices?Python DataFrame:如果我更改索引,为什么我的值会更改为 NaN?
【发布时间】:2016-12-19 01:44:40
【问题描述】:

我想更改我的索引。我的数据框如下:

partA = pd.DataFrame({'u1': 2, 'u2': 3, 'u3':4, 'u4':29, 'u5':4, 'u6':1, 'u7':323, 'u8':9, 'u9':7, 'u10':5}, index = [20])

它给出了一个大小为 (1,10) 的数据框,其中所有单元格都已填充。

但是,当我创建一个新的数据框(在我的原始代码中包含不同数据的必要)并更改此数据框的索引时,我的单元格的值都等于NaN

我知道我可以使用reset_index 来更改索引,但我希望能够在一行中完成所有操作。

我现在所做的是以下(导致 NaN)

partB = pd.DataFrame(partA, columns = ['A', 'B', 'C', 'D','E', 'F', 'G', 'H', 'I','J'])

【问题讨论】:

  • 请用新帖子提出一个新问题,而不是编辑您的问题。

标签: python pandas dataframe multiple-columns nan


【解决方案1】:

您需要values 才能将partA 转换为numpy array

partA = pd.DataFrame({'u1': 2, 'u2': 3, 'u3':4, 'u4':29, 'u5':4, 'u6':1, 
                      'u7':323, 'u8':9, 'u9':7, 'u10':5}, index = [20])
print (partA)
    u1  u10  u2  u3  u4  u5  u6   u7  u8  u9
20   2    5   3   4  29   4   1  323   9   7

partB = pd.DataFrame(partA.values,columns = ['A', 'B', 'C', 'D','E', 'F', 'G', 'H', 'I','J'])
print (partB)
   A  B  C  D   E  F  G    H  I  J
0  2  5  3  4  29  4  1  323  9  7

如果需要来自partA的索引:

partB = pd.DataFrame(partA.values,
                     columns = ['A', 'B', 'C', 'D','E', 'F', 'G', 'H', 'I','J'],
                     index = partA.index)
print (partB)
    A  B  C  D   E  F  G    H  I  J
20  2  5  3  4  29  4  1  323  9  7

你得到NaN,因为没有对齐列名,所以如果更改姓氏(u7),你会得到价值:

partB = pd.DataFrame(partA,
                     columns = ['A', 'B', 'C', 'D','E', 'F', 'G', 'H', 'I','u7'],
                     index = partA.index)
print (partB)
     A   B   C   D   E   F   G   H   I   u7
20 NaN NaN NaN NaN NaN NaN NaN NaN NaN  323

【讨论】:

  • 谢谢!我在上面的部分中添加了另一个问题。
  • 第一个问题 - 我认为最好不要创建空的DataFrame,而是通过将所有小DataFrames连接到一个来创建它,也许concat中的参数keys会有所帮助。
  • 第二个问题 - 你可以添加样本吗?但我认为这是一个新问题,不是 pandas,而是 python 问题,所以我认为最好的方法是创建一个新问题,一些 python 大师可以帮助你更好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-21
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-13
  • 2015-10-23
相关资源
最近更新 更多