我有一个大的数据帧df
,其中该帧的示例为:
A B
0 0 4140
1 0.142857 1071
2 0 1196
3 0.090909 2110
4 0.083333 1926
5 0.166667 1388
6 0 3081
7 0 1149
8 0 1600
9 0.058824 1873
10 0 3960
: : :
19 0 4315
20 0 2007
21 0.086957 3323
22 0.166667 1084
23 0.5 2703
24 0 1214
25 0 1955
26 0 6750
27 0 3240
28 0 1437
29 0 1701
我使用以下方法将列A
除以列B
:
df['new_column'] = np.where(df['A'] = 0, 0.0, df['A'].divide(df['B']))*90.0
但是我遇到错误:
ValueError: operands could not be broadcast together with shapes (1521,) (1521,1522) ()
使用df.A.shape
的A列的形状为(1521,)
使用df.B.shape
的B列的形状为(1521, 1)
我看到形状不同;改变形状会解决问题吗?如果是这样,我如何将形状更改为相同?
答案 0 :(得分:1)
错误地将数据帧传递到np.where
时,您的错误看起来非常相似。您能否检查您通过了df['A']
和'df['B']
,而不是df[['A']]
和'df[['B']]
。因为将混合序列和数据帧传递到np.where将导致这些错误。
示例 :(我只使用部分示例数据,所以我的df
只有11行)
np.where(df['A'] == 0, 0.0, df[['A']].divide(df['B']))*90.0
返回错误:
ValueError: operands could not be broadcast together with shapes (11,) () (11,12)`
和:
np.where(df['A'] == 0, 0.0, df['A'].divide(df[['B']]))*90.0
返回错误:
TypeError: 'int' object is not iterable