我有一個資料集,其中包含6列TIME1到TIME6,還有其他的。對于其中的每一個,我需要應用下面的代碼(顯示為2列)。LISTED是一個準備好的在這些列中可能出現的元素的串列。
有什么方法可以不寫6次相同的2行代碼而做到這一點嗎?
df['part1'] = df['TIME1'].astype('category')
df['PART1'].cat.set_categories(LISTED, inplace=True)
df['PART2'] = df['TIME2'].astype('category')
df['PART2'].cat.set_categories(LISTED, inplace=True)
對于astype(第一行代碼),我嘗試了以下方法:
for col in ['TIME1', 'TIME2'/span>, 'TIME3'/span>, 'TIME4'/span>, 'TIME5'/span>, 'TIME6'/span>] 。
df_col = df[col].astype('category')
我想這是可行的(不知道在整個代碼不作業的情況下如何檢查)。但是我怎樣才能對第二行代碼中的set_categories等做類似的事情呢?
簡而言之,我正在尋找一些簡短/更優雅的方法,而不是僅僅復制和修改相同的2行6次。 我是Python的新手,非常感謝任何幫助。
使用 python 2.7 和 pandas 0.24.2
。uj5u.com熱心網友回復:
是的,這是可能的! 我們可以通過創建CategoricalDtype
i = pd.RangeIndex(1, 7).astype(str)
df['PART' i] = df['TIME' i].astype(pd.CategoricalDtype(LISTED))
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/309332.html
標籤:
上一篇:串列中的數值在列中的計數
