Python 将col中的唯一值替换为list-PANDES
我希望用一个列表中的值替换一个表中的唯一值。我希望使用唯一值的顺序,而不是对Python 将col中的唯一值替换为list-PANDES,python,pandas,Python,Pandas,我希望用一个列表中的值替换一个表中的唯一值。我希望使用唯一值的顺序,而不是对replace()使用硬编码值。使用下面的df,我想使用lst,并在Val3中使用唯一的值。因此,对于第一个唯一值,使用lst[0],第二个使用lst[1] import pandas as pd df = pd.DataFrame({'Val1': [1, 4, 7, 10, 12, 12], 'Val2': ['12', '14', '14', '13', '15', '15'],
replace()
使用硬编码值。使用下面的df
,我想使用lst
,并在Val3
中使用唯一的值。因此,对于第一个唯一值,使用lst[0]
,第二个使用lst[1]
import pandas as pd
df = pd.DataFrame({'Val1': [1, 4, 7, 10, 12, 12],
'Val2': ['12', '14', '14', '13', '15', '15'],
'Val3': ['X', 'Y', 'X', 'Y', 'Y', 'X']})
lst = ['A','B']
注:
我不能使用:
df['Val3'] = df['Val3'].replace('X','A')
df['Val3'] = df['Val3'].replace('Y','B')
因为
Val3
中的值会有所不同,所以我希望这是动态的。替换会获取一个列表,这样您就可以获取该系列的唯一的
,并替换为列表(确保列表的长度与该系列中唯一值的长度相匹配):
replace获取一个列表,这样您就可以获取该系列的
唯一
,并替换为该列表(确保列表的长度与该系列中唯一值的长度匹配):
一般解决方案(如果可能)是创建字典,替换不同数量的值-此处不替换最后一个值
Z
:
df = pd.DataFrame({'Val1': [1, 4, 7, 10, 12, 12],
'Val2': ['12', '14', '14', '13', '15', '15'],
'Val3': ['X', 'Y', 'X', 'Y', 'Y', 'Z']})
lst = ['A','B']
df['Val3'] = df['Val3'].replace(dict(zip(df['Val3'].unique(),lst)))
print (df)
Val1 Val2 Val3
0 1 12 A
1 4 14 B
2 7 14 A
3 10 13 B
4 12 15 B
5 12 15 Z
如果要将列表中的所有值替换为第一个值,并将所有其他VAL替换为相同的默认值,请使用:
如果始终按列表和性能的值的数量匹配唯一值的数量,则使用numpy索引很重要-将lst
转换为aray,方法是:
一般解决方案(如果可能)是创建字典,替换不同数量的值-此处不替换最后一个值
Z
:
df = pd.DataFrame({'Val1': [1, 4, 7, 10, 12, 12],
'Val2': ['12', '14', '14', '13', '15', '15'],
'Val3': ['X', 'Y', 'X', 'Y', 'Y', 'Z']})
lst = ['A','B']
df['Val3'] = df['Val3'].replace(dict(zip(df['Val3'].unique(),lst)))
print (df)
Val1 Val2 Val3
0 1 12 A
1 4 14 B
2 7 14 A
3 10 13 B
4 12 15 B
5 12 15 Z
如果要将列表中的所有值替换为第一个值,并将所有其他VAL替换为相同的默认值,请使用:
如果始终按列表和性能的值的数量匹配唯一值的数量,则使用numpy索引很重要-将lst
转换为aray,方法是:
df = pd.DataFrame({'Val1': [1, 4, 7, 10, 12, 12],
'Val2': ['12', '14', '14', '13', '15', '15'],
'Val3': ['X', 'Y', 'X', 'Y', 'Y', 'Z']})
lst = ['A','B']
df['Val3'] = df['Val3'].replace(dict(zip(df['Val3'].unique(),lst)))
print (df)
Val1 Val2 Val3
0 1 12 A
1 4 14 B
2 7 14 A
3 10 13 B
4 12 15 B
5 12 15 Z
df = pd.DataFrame({'Val1': [1, 4, 7, 10, 12, 12],
'Val2': ['12', '14', '14', '13', '15', '15'],
'Val3': ['X', 'Y', 'X', 'Y', 'W', 'Z']})
lst = ['A','B']
df['Val3'] = df['Val3'].map(dict(zip(df['Val3'].unique(),lst))).fillna('Other')
print (df)
Val1 Val2 Val3
0 1 12 A
1 4 14 B
2 7 14 A
3 10 13 B
4 12 15 Other
5 12 15 Other
lst = ['A','B']
df['Val3'] = np.array(lst)[pd.factorize(df['Val3'].to_numpy())[0]]
print (df)
Val1 Val2 Val3
0 1 12 A
1 4 14 B
2 7 14 A
3 10 13 B
4 12 15 B
5 12 15 B