我在 pandas 数据框中有一些类似这样的数据,称为评级:
rating
id 10063204 10073140 10077387 10091371 10124740 10136418 10146903
user_id
10003869 NaN 8.0 NaN NaN 3.0 NaN NaN
10022889 NaN NaN 1.0 NaN NaN NaN NaN
user_id 代表行,id 代表列,评级作为值。 我查遍了互联网,但找不到答案:
我使用的列是数字,8 位数字,目前它们是整数(或 float ,无论如何它们都不是字符串),但我无法在给定 id 的情况下搜索或选择它们,除非它们是字符串。
使用 loc/iloc 不起作用,因为它们是列号。
例如,假设我有 id:10146903(这里的最后一列,但真实的数据集有数千列,所以我不知道它的列号只是给定这个 id),但我有数千列,我想拉取该特定 ID 的列。
我是否必须将它们更改为字符串才能像这样搜索它们?或者如果它们不是字符串,有没有办法找到它?我不想将它们转换为字符串,因为稍后它们必须再次变成整数。
我想我可以使用这些数字作为列的索引,但似乎只能在行上这样做。
我试图这样做:
specificID = ratings[10146903]
但这只是返回
KeyError: 'the label [10146903] is not in the [index]'
最佳答案
使用双方括号表示索引数组,例如df[[j,j]]
那么 i
和 j
可以是整数。
示例:
>>> np.random.seed(0)
>>> df = pd.DataFrame(np.random.randn(8, 4), columns=[1234, 56, 7, 890])
>>> df
1234 56 7 890
0 1.764052 0.400157 0.978738 2.240893
1 1.867558 -0.977278 0.950088 -0.151357
2 -0.103219 0.410599 0.144044 1.454274
3 0.761038 0.121675 0.443863 0.333674
4 1.494079 -0.205158 0.313068 -0.854096
5 -2.552990 0.653619 0.864436 -0.742165
6 2.269755 -1.454366 0.045759 -0.187184
7 1.532779 1.469359 0.154947 0.378163
>>> df[[56]]
56
0 0.400157
1 -0.977278
2 0.410599
3 0.121675
4 -0.205158
5 0.653619
6 -1.454366
7 1.469359
关于python - pandas df 可以有可供选择的列数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41308316/