pandas 不会按顺序添加列
pandas wont add columns in order
我有两个数据框
个数:
Unnamed: 0 Name Number
42 42 Aberavon 1742
43 43 Aberconwy 2769
16 16 Aberdeen North 3253
25 25 Aberdeen South 4122
355 355 Airdrie and Shotts 1194
44 44 Aldershot 4517
和选民:
Unnamed: 0 Unnamed: 0.1 Name Number
0 533 533 Aberavon 49821
1 534 534 Aberconwy 45525
2 591 591 Aberdeen North 67745
3 592 592 Aberdeen South 68056
4 593 593 Airdrie and Shotts 66792
5 0 0 Aldershot 72430
当我输入
numbers['No. Voters] = electorate['Number']
对于 print(numbers)
我得到:
Unnamed: 0 Name Number No.Voters
42 42 Aberavon 1742 80805
43 43 Aberconwy 2769 78796
16 16 Aberdeen North 3253 68343
25 25 Aberdeen South 4122 66347
355 355 Airdrie and Shotts 1194 77534
这显然是错误的,我不确定为什么,因为索引应该无关紧要,因为它们是按名称顺序排列的,因为我通过 sort_values 函数
传递了每个索引
谁能告诉我出了什么问题,正确的命令是将数据帧编号中的新列与 electorate 中的数值相匹配吗?
您可以使用 values
将列 Number
转换为 numpy array
,因此对齐得到更正:
numbers['No. Voters] = electorate['Number'].values
或两者 DataFrames
的 reset_index
以正确对齐:
numbers.reset_index(drop = True)
electorate.reset_index(drop = True)
numbers['No. Voters] = electorate['Number']
查看数据帧的索引,它们不一样。这就是您在创建新列时遇到问题的原因。
如果您不关心保留 electorate
的索引,您可以在定义 number
的新列之前使用 reset_index
:
electorate.reset_index(drop = True)
编辑:请注意,jezrael 的 values
解决方案更安全,因为它不关心两个索引。此外,如果您以后需要它,它允许保留 electorate
的索引。
numbers['No. Voters'] = electorate['Number'].values
我有两个数据框
个数:
Unnamed: 0 Name Number
42 42 Aberavon 1742
43 43 Aberconwy 2769
16 16 Aberdeen North 3253
25 25 Aberdeen South 4122
355 355 Airdrie and Shotts 1194
44 44 Aldershot 4517
和选民:
Unnamed: 0 Unnamed: 0.1 Name Number
0 533 533 Aberavon 49821
1 534 534 Aberconwy 45525
2 591 591 Aberdeen North 67745
3 592 592 Aberdeen South 68056
4 593 593 Airdrie and Shotts 66792
5 0 0 Aldershot 72430
当我输入
numbers['No. Voters] = electorate['Number']
对于 print(numbers)
我得到:
Unnamed: 0 Name Number No.Voters
42 42 Aberavon 1742 80805
43 43 Aberconwy 2769 78796
16 16 Aberdeen North 3253 68343
25 25 Aberdeen South 4122 66347
355 355 Airdrie and Shotts 1194 77534
这显然是错误的,我不确定为什么,因为索引应该无关紧要,因为它们是按名称顺序排列的,因为我通过 sort_values 函数
传递了每个索引谁能告诉我出了什么问题,正确的命令是将数据帧编号中的新列与 electorate 中的数值相匹配吗?
您可以使用 values
将列 Number
转换为 numpy array
,因此对齐得到更正:
numbers['No. Voters] = electorate['Number'].values
或两者 DataFrames
的 reset_index
以正确对齐:
numbers.reset_index(drop = True)
electorate.reset_index(drop = True)
numbers['No. Voters] = electorate['Number']
查看数据帧的索引,它们不一样。这就是您在创建新列时遇到问题的原因。
如果您不关心保留 electorate
的索引,您可以在定义 number
的新列之前使用 reset_index
:
electorate.reset_index(drop = True)
编辑:请注意,jezrael 的 values
解决方案更安全,因为它不关心两个索引。此外,如果您以后需要它,它允许保留 electorate
的索引。
numbers['No. Voters'] = electorate['Number'].values