我試圖簡化熊貓和python的語法,當執行一個基本的熊貓操作。熊貓比較
我有4列:
- A_ID
- a_score
- B_ID
- b_score
我創建了一個新的標籤稱爲基於以下DOC_TYPE:
- 一個> = B,DOC_TYPE:一個
- B> A,DOC_TYPE:乙
林在如何在大熊貓其中存在,但b計算掙扎不,在這個那麼情況就需要成爲標籤。現在它返回else語句或b。 我需要創建2個額外的比較,其規模可能是有效的,因爲我已經比較過之前的數據。尋找如何改進它。
df = pd.DataFrame({
'a_id': ['A', 'B', 'C', 'D', '', 'F', 'G'],
'a_score': [1, 2, 3, 4, '', 6, 7],
'b_id': ['a', 'b', 'c', 'd', 'e', 'f', ''],
'b_score': [0.1, 0.2, 3.1, 4.1, 5, 5.99, None],
})
print df
# Replace empty string with NaN
m_score = r['a_score'] >= r['b_score']
m_doc = (r['a_id'].isnull() & r['b_id'].isnull())
df = df.apply(lambda x: x.str.strip() if isinstance(x, str) else x).replace('', np.nan)
# Calculate higher score
df['doc_id'] = df.apply(lambda df: df['a_id'] if df['a_score'] >= df['b_score'] else df['b_id'], axis=1)
# Select type based on higher score
r['doc_type'] = numpy.where(m_score, 'a',
numpy.where(m_doc, numpy.nan, 'b'))
# Additional lines looking for improvement:
df['doc_type'].loc[(df['a_id'].isnull() & df['b_id'].notnull())] = 'b'
df['doc_type'].loc[(df['a_id'].notnull() & df['b_id'].isnull())] = 'a'
print df
你需要在現實中DOC_ID?或者它只是你的處理代碼的一部分? – Psidom
只是處理代碼的一部分,我們現在可以忽略它。 – spicyramen