我有一个 pandas df,其中有一列混合了 values 像这样
| ID | home_page |
| ---------| ------------------------------------------------|
| 1 | facebook.com, facebook.com, meta.com |
| 2 | amazon.com |
| 3 | twitter.com, dev.twitter.com, twitter.com |
我想创建一个新列,其中包含来自 home_page 列的唯一 values 。最终输出应该是
| ID | home_page | unique |
| -------- | -------------- |---------------------------|
| 1 | facebook.com, facebook.com, meta.com | facebook.com,meta.com |
| 2 | amazon.com | amazon.com |
| 3 | twitter.com, dev.twitter.com, twitter.com |twitter.com,dev.twitter.com|
我尝试了以下方法:
final["home_page"] = final["home_page"].str.split(',').apply(lambda x : ','.join(set(x)))
但是当我这样做时,我得到
TypeError: float object is not iterable
该列没有 NaN 但以防万一我尝试过
final["home_page"] = final["home_page"].str.split(',').apply(lambda x : ','.join(set(x)))
但是这样做时整个列都返回空
回答1
没错,这是来自浮点类型的 np.nan
values 。问题发生在这里:set(np.nan)
。以下应该对您有用(并且应该更快)。
df["home_page"].str.replace(' ', '').str.split(',').apply(np.unique)
如果你真的想要一个字符串,你可以在最后抛出以下内容:
.apply(lambda x: ','.join(str(i) for i in x))