[英]How do I use the pandas.melt function to unpivot a few columns while keeping the rest intact
我正在使用66列的數據庫,我希望使用python pandas.melt
函數只pandas.melt
3列。
df = pd.melt(df,value_vars=["RFR 1","RFR 2","RFR 3"],var_name="RFR Index",value_name="RFR Mode")
除非我將它們設置為id_vars
否則我發現所有其他列都被刪除了。 如何在不列出所有內容的情況下保留所有內容? (因為有這么多)
在IIUC中,您可以使用pandas.Index.difference
來獲取數據框中不在指定列表中的所有列。
有點荒謬的例子,但是:
df = pd.DataFrame(data=np.random.randn(5,10),
columns=['a','b','c','d','e','f','g','h','i','j'])
val_vars = ['e','f','g']
other_vars = df.columns.difference(val_vars)
df.melt(id_vars=other_vars, value_vars=val_vars)
不使用pandas特定功能的替代方法是使用集合:
other_vars = set(df.columns) - set(val_vars)
只需創建不包含value_vars
列的value_vars
value_vars = ["RFR 1","RFR 2","RFR 3"]
id_vars = [x for x in df.columns if x not in value_vars]
df = pd.melt(df,value_vars=value_vars,var_name="RFR Index",value_name="RFR Mode", id_vars=id_vars)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.