gpt4 book ai didi

list - 在 Pandas 中替换每个单元格的多个值

转载 作者:行者123 更新时间:2023-12-01 08:51:49 28 4
gpt4 key购买 nike

我在数据框中有以下列:

Q2
1 4
1 3
3 4 11
1 4 6 15 16

我想替换单元格中的多个值(如果存在): 1Facebook 取代, 2Instagram , 等等。

我将值拆分如下:
columns_to_split = 'Q2'

for c in columns_to_split:
df[c] = df[c].str.split(' ')

哪个输出
code                             
DSOKF31 [1, 4]
DSOVH39 [1, 3]
DSOVH05 [3, 4, 16]
DSOVH23 [1, 4, 6, 15, 16]
Name: Q2, dtype: object

但是当尝试用字典替换多个值时,如下所示:
social_media_2 = {'1':'Facebook', '2':'Instagram', '3':'Twitter', '4':'Messenger (Google hangout, Tagg, WhatsAPP, MSG, Facetime, IMO)', '5':'SnapChat', '6':'Imo', '7':'Badoo', '8':'Viber', '9':'Twoo', '10':'Linkedin', '11':'Flickr', '12':'Meetup', '13':'Tumblr', '14':'Pinterest', '15':'Yahoo', '16':'Gmail', '17':'Hotmail', '18':'M-Pesa', '19':'M-Shwari', '20':'KCB-Mpesa', '21':'Equitel', '22':'MobiKash', '23':'Airtel money', '24':'Orange Money', '25':'Mobile Bankig Accounts', '26':'Other specify'}

df['Q2'] = df['Q2'].replace(social_media_2)

我得到相同的输出:
code                             
DSOKF31 [1, 4]
DSOVH39 [1, 3]
DSOVH05 [3, 4, 16]
DSOVH23 [1, 4, 6, 15, 16]
Name: Q2, dtype: object

在这种情况下,如何替换一个单元格中的多个值?

最佳答案

由于项目的数量不同,所以没有很多结构。尽管如此,在拆分字符串后,您可以 apply将列表映射到字典值的函数:

In [36]: df = pd.DataFrame({'Q2': ['1 4', '1 3', '1 2 3']})

In [37]: df.Q2.str.split(' ').apply(lambda l: [social_media_2[e] for e in l])
Out[37]:
0 [Facebook, Messenger (Google hangout, Tagg, Wh...
1 [Facebook, Twitter]
2 [Facebook, Instagram, Twitter]
Name: Q2, dtype: object

编辑 在 Jezrael 的精彩评论之后,这里有一个版本也考虑了缺失值:
In [58]: df = pd.DataFrame({'Q2': ['1 4', '1 3', '1 2 3', None]})

In [59]: df.Q2.str.split(' ').apply(lambda l: [] if type(l) != list else [social_media_2[e] for e in l])
Out[59]:
0 [Facebook, Messenger (Google hangout, Tagg, Wh...
1 [Facebook, Twitter]
2 [Facebook, Instagram, Twitter]
3 []
Name: Q2, dtype: object

关于list - 在 Pandas 中替换每个单元格的多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39556264/

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