[英]NaNs when subtracting the same column dataframe
我有一个像这样的 dataframe:
Date,Close
1987-01-02,2540.100098
1987-01-05,2552.399902
1987-01-06,2583.899902
1987-01-07,2607.100098
1987-01-08,2603.300049
我试图将每一行减去所有其他行,但结果返回所有 NaN,我不知道为什么:
import pandas as pd
import numpy as np
df = pd.read_csv('test.csv')
df1 = pd.DataFrame(np.subtract(df['Close'], df['Close']), df.Date, df.Date)
print(df1)
结果:
Date 1987-01-02 1987-01-05 1987-01-06 1987-01-07 1987-01-08
Date
1987-01-02 NaN NaN NaN NaN NaN
1987-01-05 NaN NaN NaN NaN NaN
1987-01-06 NaN NaN NaN NaN NaN
1987-01-07 NaN NaN NaN NaN NaN
1987-01-08 NaN NaN NaN NaN NaN
您可以使用broadcasting
:
df1 = pd.DataFrame(np.subtract(df['Close'].to_numpy(), df['Close'].to_numpy()[:, None]), df.Date, df.Date)
print(df1)
Date 1987-01-02 1987-01-05 1987-01-06 1987-01-07 1987-01-08
Date
1987-01-02 0.000000 12.299804 43.799804 67.000000 63.199951
1987-01-05 -12.299804 0.000000 31.500000 54.700196 50.900147
1987-01-06 -43.799804 -31.500000 0.000000 23.200196 19.400147
1987-01-07 -67.000000 -54.700196 -23.200196 0.000000 -3.800049
1987-01-08 -63.199951 -50.900147 -19.400147 3.800049 0.000000
df1 = pd.DataFrame(np.subtract.outer(df['Close'].to_numpy(), df['Close'].to_numpy()), df.Date, df.Date)
print(df1)
Date 1987-01-02 1987-01-05 1987-01-06 1987-01-07 1987-01-08
Date
1987-01-02 0.000000 -12.299804 -43.799804 -67.000000 -63.199951
1987-01-05 12.299804 0.000000 -31.500000 -54.700196 -50.900147
1987-01-06 43.799804 31.500000 0.000000 -23.200196 -19.400147
1987-01-07 67.000000 54.700196 23.200196 0.000000 3.800049
1987-01-08 63.199951 50.900147 19.400147 -3.800049 0.000000
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.