gpt4 book ai didi

python - 行匹配标准 Python Pandas 的列的索引

转载 作者:太空宇宙 更新时间:2023-11-04 10:27:58 25 4
gpt4 key购买 nike

我有来自 Excel 文件的数据,格式为

0,1,0
1,0,0
0,0,1

我想将这些数据转换成一个列表,其中第 i 元素指示第 i 行的非零元素的位置。例如,上面的内容是:

 [1,0,2]

我试了两种方法都不行:

方式一 (NumPy)

df = pd.read_excel(file,convert_float=False)
idx = np.where(df==1)[1]

这给了我一个奇怪的错误——idx 的长度永远不会与 df 中的行数相同。对于这个数据集,这两个数字总是相等的。 (我仔细检查过,没有空行。)

方式二( Pandas )

  idx = df.where(df==1)

这给了我这样的输出:

 52     NaN      NaN      NaN 
53 1 NaN NaN
54 1 NaN NaN

这是合适的形状,但我不知道如何只获取列索引

最佳答案

设置数据框

import pandas as pd
import numpy as np
df = pd.DataFrame(np.array([[0,1,0],[1,0,0],[0,0,1]]))

使用np.argwhere 查找元素索引:

np.argwhere(df.values ==1)

返回:

array([[0, 1],
[1, 0],
[2, 2]], dtype=int64)

因此对于第 0 行,第 1 列包含 1 的 df:

    0   1   2
0 0 1 0
1 1 0 0
2 0 0 1

注意:

(例如,您可以使用以下方法仅获取列索引:np.array_split(indices, 2,1)[1])

关于python - 行匹配标准 Python Pandas 的列的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28385033/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com