【发布时间】:2022-01-22 06:53:32
【问题描述】:
我有以下数据框,除了cat1之外还有其他类别,但我只想更改类别为cat1的数据框部分。
name short code category
thyrax thx thxar.po cat1
gha gh gh.cd cat1
play pl pl.v cat1
xxdx xd xda.v cat1
......
如果代码列中. 之后的所有内容都是.cd 之外的任何内容,我希望短列采用短列中的内容+code 列中. 之后的内容和变成thx.po,但如果有cd,我希望它变成.cn。我希望输出看起来像这样,
name short code category
thyrax thx.po thxar.po cat1
gha gh.cn gh.cd cat1
play pl.v pl.v cat1
xxdx xd.v xda.v cat1
......
不知道怎么加一个条件IF的类别是cat1,.后面的代码是.cd,变成short+.后面的代码+ cn.
我希望对所有内容都使用相同的条件,除非要复制 . 之后的内容,但如果 . 之后的内容是 .cn,我希望它是 .cd。最好的方法是什么?
到目前为止,我已经得到了这个代码,
df['short'] = (df['short'].add("."+df['code'].str.split(".").str[-1]).where(df['category'].eq("cat1"),df['short']))
但我不知道如何添加条件,如果在代码列中,. 之后出现的是.cd 并发生不同的事情。
所以基本上我的条件是这样的,
首先,类别必须是cat1,
然后将短列中的内容与代码列中.之后的内容合并。
如果代码栏中.后面是cd,则改为cn。
【问题讨论】:
-
您是否考虑过将 apply 与自定义函数一起使用,并将所有条件逻辑放在那里?
-
不,我不知道该怎么做,你能指出我正确的方向吗
标签: python pandas if-statement conditional-statements