当列中有字符串时,如何从熊猫列中获取最长长度的字符串/整数/浮点数

Cal*_*ari 5 python pandas

我有一个包含多列数据和不同类型的数据框。我遇到了一列,其中包含字符串和整数。我试图找到最长/最短长度的值(注意不是最大值)。(注意:我在下面使用的例如只有整数,因为我无法弄清楚如何混合 dtypes 并且仍然称其为 int64 列)

    Name    MixedField
a   david   32252
b   andrew  4023
c   calvin  25
d   david   2
e   calvin  522
f   david   35
Run Code Online (Sandbox Code Playgroud)

我使用的方法是将 df 列转换为字符串系列(因为它们可能是 double/int/string/combinations),然后我可以从这个系列中获取最大/最小长度项:

df['MixedField'].apply(str).map(len).max()
df['MixedField'].apply(str).map(len).min()
Run Code Online (Sandbox Code Playgroud)

但是不知道如何选择最大和最小长度的实际值!?!(即32252(最长)和2(最短)

(我可能不需要解释这一点,但最大和最长之间存在细微差别......(即“aa”比“z”长))。感谢你的帮助。谢谢。

Hap*_*001 5

df我认为如果你有独特的索引,这应该可行。

field_length = df.MixedField.astype(str).map(len)
print df.loc[field_length.argmax(), 'MixedField']
print df.loc[field_length.argmin(), 'MixedField']
Run Code Online (Sandbox Code Playgroud)

  • 除了 `astype(str).map(len)` 之外,您还可以使用 `astype(str).str.len` 和方法 [`str.len`](http://pandas.pydata.org/pandas-docs/版本/0.17.1/生成/pandas.Series.str.len.html) (2认同)