[英]How do I divide two rows from a pandas DataFrame and store the result in a second DataFrame?
我想從第一個DataFrame
划分兩行,並將結果存儲在第二個DataFrame
。 我已經基於這個問題進行了嘗試,但是到目前為止,運氣還不錯。
第一個DataFrame
中的行索引是格式(str, int)
tuples
,我要計算的比率(將成為第二個DataFrame
的索引)表示為tuple
的tuples
,並存儲在list
:
(gene, position)
((gene, position1), (gene, position2))
我的到目前為止是我的代碼:
df1 = pd.DataFrame(data={'A':[1,2,3], 'B':[4,5,6], 'C':[7,8,9], 'D' [10,11,12]},
index=[('geneA', 1538), ('geneA', 1591), ('geneA', 1687)])
A B C D
(geneA, 1538) 1 4 7 10
(geneA, 1591) 2 5 8 11
(geneA, 1687) 3 6 9 12
pairs = [(('geneA', 1538), ('geneA', 1591))]
df2 = pd.DataFrame()
for pair in pairs:
df2.loc[[pair]] = df1.loc[[pair[0]]] / df1.loc[[pair[1]]]
當我運行此代碼時,出現ValueError
:
ValueError: Buffer has wrong number of dimensions (expected 1, got 3)
我上面鏈接的上一個示例在進行除法的行中沒有嵌套的括號,但是當我刪除括號時,得到了與索引相關的KeyErrors
。 我懷疑這與我使用tuples
和嵌套tuples
作為indices
。 任何幫助將不勝感激,我花了整個下午的時間來解決這個問題。
pandas
tuples for a
MultiIndex使用tuples for a
( 請參閱docs ):
MultiIndex
對象是標准Index
對象的層次結構類似物,該對象通常將軸標簽存儲在pandas對象中。 您可以將MultiIndex
一個元組數組,其中每個元組都是唯一的。 阿MultiIndex
可以從陣列(使用的列表來創建MultiIndex.from_arrays
),元組(使用的陣列MultiIndex.from_tuples
),或者一個交叉組iterables(使用的MultiIndex.from_product
)。
因此,首先定義MultiIndex
可能是最合適的。
df1 = pd.DataFrame(data={'A':[1,2,3], 'B':[4,5,6], 'C':[7,8,9], 'D': [10,11,12]}, index=pd.MultiIndex.from_tuples([('geneA', 1538), ('geneA', 1591), ('geneA', 1687)]))
A B C D
geneA 1538 1 4 7 10
1591 2 5 8 11
1687 3 6 9 12
像這樣定義,該划分工作正常:
pairs = [(('geneA', 1538), ('geneA', 1591))]
df2 = pd.DataFrame()
for pair in pairs:
df2[pair] = df1.loc[pair[0]].div(df1.loc[pair[1]])
df2.T
A B C D
((geneA, 1538), (geneA, 1591)) 0.5 0.8 0.875 0.909091
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.