簡體   English   中英

如何使用pandas.melt函數取消幾列的同時保持其余列完好無損

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM