我想一次对数据帧执行以下操作
opr1 = df[df != '']
opr2 = df.dropna(axis=1, how='all', inplace= True)
opr3 = df.dropna(axis=0, how='all', inplace= True)
最佳答案
您可以通过掩码对集合 0
使用索引:
df[df['A'] == 0] = 0
print (df)
A B C D
0 0 0 0 0
1 6 7 2 8
2 2 8 6 3
3 0 0 0 0
替代方法是使用DataFrame.mask
:
df = df.mask(df['A'] == 0, 0)
如果性能很重要,请使用 DataFrame
构造函数和 numpy.where
:
df = pd.DataFrame(np.where(df['A'].to_numpy()[:, None] == 0, 0, df),
index=df.index,
columns=df.columns)
print (df)
A B C D
0 0 0 0 0
1 6 7 2 8
2 2 8 6 3
3 0 0 0 0
10k 行、4 列、50% 匹配数据的示例数据的性能:
#10k rows
df = pd.concat([df] * 2500, ignore_index=True)
In [101]: %timeit df[df['A'] == 0] = 0
465 µs ± 40.2 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
In [103]: %timeit df.mask(df['A'] == 0, 0)
2.56 ms ± 419 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
In [105]: %timeit pd.DataFrame(np.where(df['A'].to_numpy()[:, None] == 0, 0, df), index=df.index, columns=df.columns)
123 µs ± 666 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)
关于pandas - 对数据框 pandas python 执行多个操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64134423/