我想改变我的指数。我的dataFrame如下:
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)的数据帧,所有单元格都已填满。
但是,当我创建一个新的数据帧(我原始代码中包含不同数据时需要)并且我更改了此dataFrame的索引时,我的单元格的值都等于NaN
。
我知道我可以使用reset_index
来更改索引,但我希望能够在一行中完成所有操作。
我现在做的是以下(导致NaNs)
partB = pd.DataFrame(partA, columns = ['A', 'B', 'C', 'D','E', 'F', 'G', 'H', 'I','J'])
答案 0 :(得分:2)
您需要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