簡體   English   中英

pandas如何跨時間序列?

[英]How do I cross time series in pandas?

假設我有一個 dataframe 和一個 integer 索引:

pd.DataFrame([[4,5],[7,8],[9,10]],columns=['a','b'])

    a   b
0   4   5
1   7   8
2   9   10

我想為每個交叉b創建a比率矩陣,為每個索引,所以我得到一系列形式的矩陣:

a/a a/b
b/a b/b

對於每個索引。 最后,我想將它們展開成四欄。

有簡單的方法嗎? 如果有一個簡單的numpy解決方案可以做到這一點,那可能會更好。

簡單的方法:

pd.DataFrame({f'{x}/{y}': df[x] / df[y] for x in df for y in df})

稍微復雜的方式(如果你有大量的列可能會更快):

a = df.values[None].T / df.values
pd.DataFrame(np.hstack(a), columns=(f'{x}/{y}' for x in df for y in df))

結果

   a/a    a/b       b/a  b/b
0  1.0  0.800  1.250000  1.0
1  1.0  0.875  1.142857  1.0
2  1.0  0.900  1.111111  1.0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM