【问题标题】:How can I "unwrap" columns which contain multiple items?如何“解包”包含多个项目的列?
【发布时间】:2015-12-03 12:18:30
【问题描述】:

我有一个 DataFrame,其中一列是 set 的字符串表示形式。是否可以“解包”任何这样的行?

一个例子:

     ColA                 ColB                    ColC   ColD
0    "one item in a set"  "{'item 1'}"            "..."  "..."
1    "several in a set"   "{'item 1', 'item 2'}"  "..."  "..."
...

应该变成:

     ColA                 ColB       ColC   ColD 
0    "one item in a set"  'item 1'   "..."  "..."
1    "several in a set"   'item 1'   "..."  "..." 
2    "several in a set"   'item 2'   "..."  "..."
... 

【问题讨论】:

  • 当我第一次收到它时它包含字符串,但如果有帮助,我已经写了this function 来转换它。

标签: python pandas dataframe


【解决方案1】:

你可以:

df2 = df.colB.str[1:-1].str.split(',', expand=True)
df2 = df2.stack().reset_index()
df2 = df2.drop('level_1', axis=1).rename(columns={0: 'colB'}).set_index('level_0')
df = df.drop('colB', axis=1)
df = pd.concat([df, df2], axis=1)

',' expand 上的{}.split() 删除到新列和.stack() 后,然后清理。

【讨论】:

  • 还有其他栏目。我将编辑问题以显示他们,因为我认为这个答案在这种情况下不起作用。
  • 是否还有其他列需要同时展开,或者其他列可以附加到索引中?
  • 它们可以附加到索引中。实际上有两列我需要展开,但它们可以一个接一个地完成。
  • 如果您有很多列,使用具有唯一值的单列获取“设置”列可能更容易,这样您可以在展开后合并回原始框架。
  • 更新为单独展开然后合并回来。
猜你喜欢
  • 2019-07-01
  • 1970-01-01
  • 2015-03-20
  • 1970-01-01
  • 1970-01-01
  • 2020-04-06
  • 1970-01-01
  • 2021-01-08
相关资源
最近更新 更多