python - 如何使用 pandas.melt 函数取消透视几列,同时保持其余列完好无损

标签 python python-3.x pandas

我正在使用一个包含 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/

相关文章:

python - 带有字符串列名的 DataFrame

python - 扭曲的Python垃圾收集

python - 基于日期时间索引 Pandas 每 12 小时合并数据框和填充列?

python-3.x - 将 pandas 数据框转换为列表字典

python - 如何使用 PySpark 删除数据框中基于多个过滤器的列?

python - 将句子拆分为单词并将情感极性重新应用于每个单词时如何维护索引?

python - 首先按特定字段值排序 pyspark

python - 树莓派上的 os.walk 失败

python - 使用 instapy-cli 库通过 try/except 防止 python 脚本崩溃

python - 如何将列表中的每个字典转换为Python中的嵌套字典?