[英]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.