【问题标题】:How to unpack the fields with multiple values into rows using pandas如何使用 pandas 将具有多个值的字段解压缩为行
【发布时间】:2020-11-19 19:56:32
【问题描述】:

我是 python pandas 的新手,遇到这个问题

Year, Category,      Law,     col_1,     col_2,   col_3,  col_4
2015, Contraception, Law_1, 'CO MO VA',   '' ,     'XY',   ''

有什么办法可以得到这个:

Year, Category,      Law,    state, stage
2015, Contraception, Law_1,   CO,   col_1
2015, Contraception, Law_1,   MO,   col_1
2015, Contraception, Law_1,   VA,   col_1
2015, Contraception, Law_1,   XY,   col_3

【问题讨论】:

  • 你能解释一下为什么 state=XY 的行有 stage=col_2。根据输入,不应该是col_3吗?
  • @StefanScheller 这是一个错字,刚刚编辑过。
  • @RichieV - 如果您将其发布为答案会更好

标签: python python-3.x pandas dataframe data-science


【解决方案1】:
df = pd.melt(frame=data, id_vars=data.columns[:3], value_name='State',var_name='Stage')  

df.State = df.State.str.split()
df = df.explode('State')

df.dropna(subset = ["State"], inplace=True)

  • 确保您拥有 pandas0.25.0,因为仅最新版本支持爆炸。

【讨论】:

    【解决方案2】:
    df = df.melt(id_vars=df.columns[:3], var_name='stage', value_name='state')
    df.stage = df.stage.str.split(' ')
    df = df.explode('state')
    

    【讨论】:

    • 我得到了以下回溯:回溯(最近一次调用最后一次):文件“/Users/danishprakash/Documents/test_chan.py”,第 6 行,在 var_name='stage', value_name= 'state')文件“/usr/local/lib/python2.7/site-packages/pandas/core/frame.py”,第 6094 行,在融化 col_level=col_level)文件“/usr/local/lib/python2. 7/site-packages/pandas/core/reshape/melt.py”,第 48 行,熔体“”.format(missing=list(missing))) KeyError:“DataFrame 中不存在以下 'id_vars': ['类别']" ```
    • 没有工作 Traceback(最近一次调用最后一次):文件“/Users/danishprakash/Documents/test_chan.py”,第 7 行,在 df = df.explode('stage' ) 文件“/usr/local/lib/python2.7/site-packages/pandas/core/generic.py”,第 5067 行,在 getattr 中返回 object.__getattribute__(self, name) AttributeError: 'DataFrame' 对象没有属性 'explode'
    • 将 pandas 导入为 pd df = pd.read_csv('blah.csv') df = df.melt(id_vars=df.columns[:3], var_name='stage', value_name='state ') df.stage = df.stage.str.split('') print(df) # df = df.explode('stage')
    • 这是我正在尝试的,我认为问题在于状态列中的“”。
    猜你喜欢
    • 2022-11-25
    • 2018-12-15
    • 1970-01-01
    • 2018-02-23
    • 2018-07-16
    • 2019-02-11
    • 2022-08-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多