这可能是我的一个根本误解,但我希望pandas.Series.str将pandas.Series值转换为字符串。
但是,当我执行以下操作时,系列中的数值将转换为np.nan:
df = pd.DataFrame({'a': ['foo ', 'bar', 42]})
df = df.apply(lambda x: x.str.strip() if x.dtype == 'object' else x)
print(df)
Out:
a
0 foo
1 bar
2 NaN
Run Code Online (Sandbox Code Playgroud)
如果我先将该str函数应用于每一列,数值将转换为字符串而不是np.nan:
df = pd.DataFrame({'a': ['foo ', 'bar', 42]})
df = df.apply(lambda x: x.apply(str) if x.dtype == 'object' else x)
df = df.apply(lambda x: x.str.strip() if x.dtype == 'object' else x)
print(df)
Out:
a
0 foo
1 bar
2 42
Run Code Online (Sandbox Code Playgroud)
关于这个主题的文档相当少。我错过了什么?
我对 Haskell 比较陌生,所以希望这不是一个愚蠢的问题。我正在寻找一种常见的/众所周知的类型,它本质上是一个元组,但已Ord定义为仅按第一个元素进行比较。
我可以这样定义自己:
data RankedItem a = RankedItem Double a deriving (Show)
instance Eq (RankedItem a) where
(RankedItem lkey _) == (RankedItem rkey _) = lkey == rkey
instance Ord (RankedItem a) where
(RankedItem lkey _) `compare` (RankedItem rkey _) = compare lkey rkey
Run Code Online (Sandbox Code Playgroud)
是否有内置类型或常用的第三方容器来实现这一点?