我正在使用一个包含 66 列的数据库,我希望使用 python 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)
关于python - 如何使用 pandas.melt 函数取消透视几列,同时保持其余列完好无损,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57210071/