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