gpt4 book ai didi

python - Python 中数据帧不同值的高效转换

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

我有这样的数据:

republican,n,y,n,y,y,y,n,n,n,y,?,y,y,y,n,y
republican,n,y,n,y,y,y,n,n,n,n,n,y,y,y,n,?
democrat,?,y,y,?,y,y,n,n,n,n,y,n,y,y,n,n
democrat,n,y,y,n,?,y,n,n,n,n,y,n,y,n,n,y
democrat,y,y,y,n,y,y,n,n,n,n,y,?,y,y,y,y
democrat,n,y,y,n,y,y,n,n,n,n,n,n,y,y,y,y
democrat,n,y,n,y,y,y,n,n,n,n,n,n,?,y,y,y
republican,n,y,n,y,y,y,n,n,n,n,n,n,y,y,?,y

来自 source .我想以最有效的方式将所有数据 (dataframe) 中所有不同的不同值更改为数值。在上面提到的示例中,我想转换 republican-> 1 和 democrat -> 2,y ->3,n->4 和? -> 5(或 NULL)。

我尝试使用以下内容:

# Convert string column to integer
def str_column_to_int(dataset, column):
class_values = [row[column] for row in dataset]
unique = set(class_values)
lookup = dict()
for i, value in enumerate(unique):
lookup[value] = i
for row in dataset:
row[column] = lookup[row[column]]
return lookup

但是,我不确定使用 Pandas 是否更高效,或者是否有其他更好的解决方案。 (这应该对任何数据源都是通用的)。下面是使用 Pandas 将数据转换为 dataframe 的过程:

import pandas as pd
file_path = 'https://archive.ics.uci.edu/ml/machine-learning-databases/voting-records/house-votes-84.data'
dataset = pd.read_csv(file_path, header=None)

最佳答案

v = df.values

f = pd.factorize(v.ravel())[0].reshape(v.shape)

pd.DataFrame(f)

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
0 0 1 2 1 2 2 2 1 1 1 2 3 2 2 2 1 2
1 0 1 2 1 2 2 2 1 1 1 1 1 2 2 2 1 3
2 4 3 2 2 3 2 2 1 1 1 1 2 1 2 2 1 1
3 4 1 2 2 1 3 2 1 1 1 1 2 1 2 1 1 2
4 4 2 2 2 1 2 2 1 1 1 1 2 3 2 2 2 2
5 4 1 2 2 1 2 2 1 1 1 1 1 1 2 2 2 2
6 4 1 2 1 2 2 2 1 1 1 1 1 1 3 2 2 2
7 0 1 2 1 2 2 2 1 1 1 1 1 1 2 2 3 2

关于python - Python 中数据帧不同值的高效转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46400212/

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