在熊猫数据框中复制行

时间:2020-02-24 21:20:33

标签: python-3.x pandas

我有一个与以下格式相似的数据框;

Sites            Points        Value
ABC,DEF          2             10
GHI, JKL,MNO     4             15

我想为每个点创建新行,我已经可以使用以下代码进行处理(免责声明:我找到了此代码,但找不到引用);

def duplicate_rows(df, countcol):
for _, row in df.iterrows():
    for i in range(int(row[countcol])-1):
        df = df.append(row)

df.sort_index(inplace=True)
return df


df_dup = duplicate_rows(base_df,'Points')

输出为

Sites          Points     Values
ABC, DEF       2          10
ABC, DEF       2          10
GHI, JKL, MNO  4          15
GHI, JKL, MNO  4          15
GHI, JKL, MNO  4          15
GHI, JKL, MNO  4          15

我想要实现的是;

Sites          Points     Values
ABC            2          10
DEF            2          10
GHI            4          15
JKL            4          15
MNO            4          15
MNO            4          15

关于如何实现这一目标的任何想法?

2 个答案:

答案 0 :(得分:2)

IIUC,如果您使用的是0.25+熊猫:

(df.assign(Sites=df.Sites.str.split(',\s*'))
   .explode('Sites')
)

输出:

  Sites  Points  Value
0   ABC       2     10
0   DEF       2     10
1   GHI       4     15
1   JKL       4     15
1   MNO       4     15

答案 1 :(得分:1)

您可以使用DataFrame.explode

df['Sites'] = df['Sites'].str.split(',')
df.explode('Sites').reset_index(drop = True)


    Sites   Points  Value
0   ABC     2       10
1   DEF     2       10
2   GHI     4       15
3   JKL     4       15
4   MNO     4       15