在 pandas 数据框中使用条件值时出错
Error using conditional values in pandas dataframe
我正在尝试使用以下代码设置一个新列,如果单词 Thunderstorm
在 wdf['Notes']
列中,则 wdf['Thunder']
设置为 wdf['RngT]
的值.但是,我不断收到错误 TypeError: argument of type 'float' is not iterable
。 None 的列是浮点数。 RngT 是一个int,Notes 是一个对象。完整代码是:
wdf['Thunder'] = [wdf['RngT'] if 'Thunderstorm' in x else 0 for x in wdf['Notes']]
pandas 的新手,如有任何见解,我们将不胜感激。
谢谢!
您可以考虑一个高性能的替代方案,np.where
:
wdf['Thunder'] = np.where(
wdf['Notes'].astype(str).str.contains('Thunderstorm'), wdf['RngT'], 0
)
请注意,您的第一种方法可能行不通,因为您的专栏混合了字符串和浮点数。在检查包含之前使用 astype(str)
应该可以解决这个问题。
我正在尝试使用以下代码设置一个新列,如果单词 Thunderstorm
在 wdf['Notes']
列中,则 wdf['Thunder']
设置为 wdf['RngT]
的值.但是,我不断收到错误 TypeError: argument of type 'float' is not iterable
。 None 的列是浮点数。 RngT 是一个int,Notes 是一个对象。完整代码是:
wdf['Thunder'] = [wdf['RngT'] if 'Thunderstorm' in x else 0 for x in wdf['Notes']]
pandas 的新手,如有任何见解,我们将不胜感激。
谢谢!
您可以考虑一个高性能的替代方案,np.where
:
wdf['Thunder'] = np.where(
wdf['Notes'].astype(str).str.contains('Thunderstorm'), wdf['RngT'], 0
)
请注意,您的第一种方法可能行不通,因为您的专栏混合了字符串和浮点数。在检查包含之前使用 astype(str)
应该可以解决这个问题。