我有1000个结构相同的 Dataframe ,但其中一些可能包含字符串作为值。对于所有这些帧,我需要做同样的计算,只是排除那些 Dataframe 中出现子环的行。包含字符串的数据集结构示例如下:
time x y z
0.00 run_failed run_failed run_failed
0.02 run_failed run_failed run_failed
0.03 test_failed test_failed test_failed
0.04 44 321 644
0.04 44 321 644
0.04 44 321 644
0.03 test_failed test_failed test_failed
0.04 44 321 644
0.04 44 321 644
dtypes方法,那些包含子字符串的dfs将始终是对象类型,而float 64的“普通”dfs -
为了解决这个问题,我编写了以下脚本:
for df in dfs:
add = 0
z = pd.read_csv(df)
if type(z["x"]) != np.float64:
bmb = z[z['x'].str.contains('failed')]
z = z.drop(bmb.index)
add = len(bmb)
print(add)
....
and then the code for doing calculations assuming that if string occured, it was dropped inside if statement
但是当我运行代码时,它返回错误:“只能使用.str访问器与字符串值!”指向if语句块内部,但是数据集如果完全是float 64类型,以及为什么它试图处理这个“bmb = z[z ['x'].str.contains('failed')]”命令对我来说一点也不清楚。
2条答案
按热度按时间li9yvcax1#
在这里,您将获得DataFrame* 的 *column类型,即
Series
,请考虑以下简单示例给出输出
因此,您的条件始终保持不变(即与写入
if True:
相同)。如果您对保持值的类型感兴趣,请使用.dtype
属性给出输出
odopli942#
我想我找到问题所在了首先我换了衣服
到
在进一步的计算中,当我将pandas列作为series时,我添加了.astype(float),看起来就像是通过if语句处理dataframe,列中的值变成了字符串,因为它们被返回如下: