gpt4 book ai didi

python - 将列索引字符串附加到 DataFrame 列

转载 作者:行者123 更新时间:2023-11-28 18:13:10 25 4
gpt4 key购买 nike

我正在使用 Learning to Rank 进行一个项目。下面是示例数据集格式(取自 https://www.microsoft.com/en-us/research/project/letor-learning-rank-information-retrieval/ )。第一列是排名,第二列是query id,后面是[feature number]:[feature value]

1008 qid:10 1:0.004356 2:0.080000 3:0.036364 4:0.000000 … 46:0.00000

1007 qid:10 1:0.004901 2:0.000000 3:0.036364 4:0.333333 … 46:0.000000

1006 qid:10 1:0.019058 2:0.240000 3:0.072727 4:0.500000 … 46:0.000000

现在,我在 Pandas.DataFrame 中成功地将我的数据转换为以下格式。

10  qid:354714443278337 3500 1 122.0 156.0 13.0 1698.0 1840.0 92.28260 ...
...

前两列已经很好了。接下来我需要将特征编号附加到其余列(例如,3500 中的第一个特征变为 1:3500)

我知道我可以使用以下命令将字符串附加到列。

df['col'] = 'str' + df['col'].astype(str)

查看第一个特征,3500,位于列索引 2,所以我能想到的是为每一列附加 column index - 1。如何根据列号附加字符串?

如有任何帮助,我们将不胜感激。

最佳答案

我认为需要DataFrame.radd用于从右侧添加列名称和 iloc从第二列到末尾的选择:

print (df)
0 1 2 3 4 5 6 7 8 \
0 10 qid:354714443278337 3500 1 122.0 156.0 13.0 1698.0 1840.0
1 10 qid:354714443278337 3500 1 122.0 156.0 13.0 1698.0 1840.0

9
0 92.2826
1 92.2826

df.iloc[:, 2:] = df.iloc[:, 2:].astype(str).radd(':').radd((df.columns[2:] - 1).astype(str))
print (df)
0 1 2 3 4 5 6 7 \
0 10 qid:354714443278337 1:3500 2:1 3:122.0 4:156.0 5:13.0 6:1698.0
1 10 qid:354714443278337 1:3500 2:1 3:122.0 4:156.0 5:13.0 6:1698.0

8 9
0 7:1840.0 8:92.2826
1 7:1840.0 8:92.2826

关于python - 将列索引字符串附加到 DataFrame 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50014314/

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