我有一个数据框inp_df
,其中包含带有建筑物编号的列'DEINR'
。由于存在诸如“ 44a”或“ 14c / 1”之类的值,因此此列的类型为 object 。当我尝试执行inp_df['DEINR'].min()
或.max()
时出现错误:
'<=' not supported between instances of 'str' and 'float'
我应该怎么做才能使此列达到最小/最大?谢谢!
答案 0 :(得分:1)
DEINR
列的数据类型为object,因为它同时具有float
和str
值。首先,您需要将整个列转换为str
类型,然后才能在该列上计算min()
或max()
。
d = {'col1': ['14c', 2], 'col2': ['432a', 4]}
df = pd.DataFrame(data=d)
df.dtypes
输出:
col1 object
col2 object
dtype: object
将列转换为str
dtype:
df['col1'] = df['col1'].astype(str)
df['col1'].min()
输出:
'14c'
希望这就是您想要的。
答案 1 :(得分:0)
字符串和浮点值都出现在“ DEINR”列中。或者您可以隐蔽地漂浮。
答案 2 :(得分:0)
我已经通过捕获TypeError解决了这个问题。
minimum_values = pd.DataFrame(columns=['Minimum Value'])
for v in list(inp_df.columns.values):
try:
minimum_values.loc[v] = [inp_df[v].min()]
except TypeError:
minimum_values.loc[v] ='N/A'
谢谢!