gpt4 book ai didi

python - 替换数据框 Python 的一列中的多个值

转载 作者:太空宇宙 更新时间:2023-11-03 23:52:42 26 4
gpt4 key购买 nike

数以千计的值需要用更简单的命名格式替换。比如原来dataframe的命名是AB5648、CD5678、EF5468等,需要替换成HH_1、HH_2、HH_3等,按照我创建的对应表。对应表包括要替换和将要替换的值。

Original file = df_temp 

Filename = 'HH_number_Old.csv'
Filename = 'HH_number_New.csv'

Old New
AB1321 HH_1
CD5678 HH_2
EF5468 HH_3
EF5468 HH_3
EF5438 HH_4
EF5368 HH_5
EF5068 HH_6
EF5468 HH_7
EF5458 HH_8
EF5168 HH_9
..... .....
XZ5465 HH_3000

这是我尝试过的。

for i in range (3000):
print(HH_number_old[i])
print(HH_number_new[i])

temp_fin = df_temp.replace({HH_contract[i], HH_no[i]}, inplace=True)
#temp_fin is the resultant dataframe with replaced values

Result = temp_fin file is empty.

当我尝试如下特定数量的 [i] 时,替换工作正常。

temp_fin = df_temp.replace (HH_number_old[1], HH_number_new[1])

最佳答案

使用Series.rank :

df['new'] = 'HH_' + df['To_be_replaced'].rank(method='dense').astype(int).astype(str)

GroupBy.ngroup :

df['new'] = 'HH_' + df.groupby('To_be_replaced', sort=False).ngroup().add(1).astype(str)

print (df)
To_be_replaced To_replace new
0 AB1321 HH_1 HH_1
1 CD5678 HH_2 HH_2
2 EF5468 HH_3 HH_3
3 EF5468 HH_3 HH_3
4 EF5468 HH_3 HH_3
5 EF5468 HH_3 HH_3
6 EF5468 HH_3 HH_3
7 EF5468 HH_3 HH_3
8 EF5468 HH_3 HH_3
9 EF5468 HH_3 HH_3

编辑:

要替换多个其他 DataFrame,请使用:

d = dict(zip(df['To_be_replaced'], df['new']))

然后 Series.map在另一个 DataFrame 中:

df1['new'] = df1['To_be_replaced'].map(d)
df2['new'] = df2['To_be_replaced'].map(d)

关于python - 替换数据框 Python 的一列中的多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58796694/

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