python - 根据上一行添加新行

标签 python pandas dataframe

我有以下数据框:

 index    Index_Date    A    B    C    D
 ===========================================
 1        2015-01-31    10   10   we   10
 2        2015-02-01     2    3   jk   22 and 23 and 24 
 3        2015-02-02    10   60   nm   280 and 284
 4        2015-02-03    10  100   oi   250
 5        2015-02-03    10  100   yh  Egyptian and Hittite

我想达到

 index    Index_Date    A    B    C    D
 ===========================================
 1        2015-01-31    10   10   we  10
 2        2015-02-01     2    3   jk  22
 3        2015-02-01     2    3   jk  23
 4        2015-02-01     2    3   jk  24
 5        2015-02-02    10   60   nm  280
 6        2015-02-02    10   60   nm  284
 7        2015-02-03    10  100   oi  250
 8        2015-02-03    10  100   yh  Egyptian
 9        2015-02-03    10  100   yh  Hittite

基本上程序需要找到and语句,如果找到重复该行,然后离开 before and第一个 22 中的部分 ( after and )重复行中的部分 ( 23 ) 和其余行。

我从这个开始,但我不确定我应该去哪里。

  for row in df:
        if df['D'].str.contains(' and ', case=True, na=False, regex=True):

我之前也问过更简单的版本。我再次不确定它太难还是太容易。

最佳答案

人们已经多次询问了许多微调此方法及其变体的方法。

D = df.D.astype(str).str.split(' and ')
idx = df.index.repeat(D.str.len())
df.loc[idx].assign(D=np.concatenate(D).astype(int))

   Index_Date   A    B   C    D
0  2015-01-31  10   10  we   10
1  2015-02-01   2    3  jk   22
1  2015-02-01   2    3  jk   23
1  2015-02-01   2    3  jk   24
2  2015-02-02  10   60  nm  280
3  2015-02-03  10  100  oi  250

关于python - 根据上一行添加新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48602311/

相关文章:

python - 将数据框与从应用函数创建的另一个数据框合并?

python - 用于混合数据类型列表的 Numpy dtype

Python数据输出到Excel

python - 检查 NaT 或 pandas 时间戳

python - 如何提取日期条件下的行

Python/ Pandas : Bug with element-wise division resulting in NaN?

python - 删除 pandas 中其他行中包含字符串的行

python - 使用条件修改 pandas 数据框中的值

r - 根据新列扩展数据框

python - 将 Python numpy 数组写入 .mat 文件