【问题标题】:Dynamically explode columns in Pandas row动态分解 Pandas 行中的列
【发布时间】:2018-04-02 21:40:24
【问题描述】:

我有一个DataFrame,每行有多个列,每列需要拆分为新行

DataFrame 当前(缩短)看起来像这样

|---------------------------------------------------------------------------------------------------------------------------------|
|institution_short_name |interest_paid1 |interest_paid2 |product_detail_value_min |term_01m_value |term_02y_value |term_03m_value |
|---------------------------------------------------------------------------------------------------------------------------------|
|One                    |Z              |Q              |2000                     |0.50           |0.75           |0.75           |
|One                    |Z              |Q              |5000                     |0.50           |3.65           |3.75           |
|One                    |M              |M              |20000                    |Nan            |3.65           |Nan            | 
|---------------------------------------------------------------------------------------------------------------------------------|

对于每个term 列,例如,我想从列名中提取 01m、02y、03m 以及该列下该行的值并将其分解如下:

|----------------------------------------------------------------------------------------------------------|
|institution_short_name |interest_paid1 |interest_paid2 |product_detail_value_min |Term            |Value  |
|----------------------------------------------------------------------------------------------------------|
|One                    |Z              |Q              |2000                     |01m             |0.5    |
|One                    |Z              |Q              |2000                     |02y             |3.75   |
|One                    |Z              |Q              |2000                     |03m             |0.75   |
|One                    |Z              |Q              |5000                     |01m             |0.5    |
|One                    |Z              |Q              |5000                     |02y             |3.65   |
|One                    |Z              |Q              |5000                     |03m             |3.75   |
|One                    |M              |M              |20000                    |02y             |3.65   |
|----------------------------------------------------------------------------------------------------------|

我不是要一个完整的解决方案,只是让我开始。谢谢!

【问题讨论】:

  • 熊猫中的explode是什么?
  • @Prateek: Series.explode is new in 0.25,它将“list-likes”(例如对象列表、字符串列表)拆分为多行。

标签: python python-3.x python-2.7 pandas dataframe


【解决方案1】:

您可以查看wide_to_long

pd.wide_to_long(df.repalce('Nan',np.nan),['term'],i=['institution_short_name','interest_paid1','interest_paid2','product_detail_value_min'],j='Term',suffix='\\w+').reset_index().dropna()

【讨论】:

  • 谢谢,这正是我要找的
  • @PhilBaines yw :-) 一个提示suffix='\\w+' 这是最令人困惑的部分,我曾经遇到过问题:-)
  • @PhilBaines 如果这是您需要的,您介意接受吗?
猜你喜欢
  • 2021-05-22
  • 1970-01-01
  • 2021-07-23
  • 2020-04-30
  • 1970-01-01
  • 1970-01-01
  • 2021-08-25
  • 2016-05-21
  • 2020-04-09
相关资源
最近更新 更多