You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将不等宽情感分析词典wide dataframe从宽格式转换为long format

解决方案

下面分别给出R和Python两种常用数据分析环境下的极简实现方案:

R 实现(基于tidyverse)

依赖tidyverse套件的pivot_longer函数即可一步完成转换:

  • 加载依赖:library(tidyverse)
  • 示例数据构造(可跳过,直接替换为你的实际数据):
wide_df <- tibble(
  word = c("开心", "难过"),
  alternativeform1 = c("高兴", "伤心"),
  alternativeform2 = c("开心到飞起", NA),
  value = c(1, -1)
)
  • 转换代码:
long_df <- wide_df %>%
  pivot_longer(
    cols = starts_with(c("word", "alternativeform")),
    values_to = "word",
    values_drop_na = TRUE
  ) %>%
  select(word, value)

说明:values_drop_na参数会自动过滤掉变体列的NA行,无需额外写过滤逻辑;如果后续新增更多变体列,starts_with规则会自动匹配所有符合命名规则的列,不用修改代码。

Python 实现(基于pandas)

用melt方法结合空值过滤即可完成:

  • 加载依赖:import pandas as pd
  • 示例数据构造(可跳过,直接替换为你的实际数据):
import numpy as np
wide_df = pd.DataFrame({
    "word": ["开心", "难过"],
    "alternativeform1": ["高兴", "伤心"],
    "alternativeform2": ["开心到飞起", np.nan],
    "value": [1, -1]
})
  • 转换代码:
long_df = (wide_df
           .melt(
               id_vars="value",
               value_vars=["word", "alternativeform1", "alternativeform2"],
               value_name="word"
           )
           .dropna(subset=["word"])
           .loc[:, ["word", "value"]]
           .reset_index(drop=True)
)

说明:如果变体列数量不固定,可把value_vars替换为[col for col in wide_df.columns if col != "value"],自动识别所有需要转换的词列,适配性更强。

内容的提问来源于stack exchange,提问作者Honza88

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 19:48:00