我有以下数据框:
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/