基于列值

时间:2017-09-08 13:17:49

标签: python pandas dataframe lambda

我手边有一项任务,我想为相同大小的聚类算法准备输入。 输入包含重复的行,用于更重要的观察,重要性的重量作为行数提供。

无论如何,我有一个在列中具有所需行数的数据帧。是否有一些在数据框中创建重复项的简单方法?

以下是一个例子:

import itertools
import pandas as pd

df = pd.DataFrame({'Letter': ['A', 'B', 'C', 'D'],
               'Duplicate': [2, 1, 3, 1]})

print(df)
Out[118]: 
      Duplicate Letter
0          2      A
1          1      B
2          3      C
3          1      D

我想要的输出如下:

Out[117]: 
   Duplicate Letter
0          2      A
1          2      A
2          1      B
3          3      C
4          3      C
5          3      C
6          1      D

有一些简单的方法吗?这就是我到达那里的方式:

# create a list of duplicate unique keys
dup_list = []
for i in range(len(df)):
    dup_list.append([df.loc[i,'Letter']]*int(df.loc[i,'Duplicate']))

# make the list flat
flat_list = list(itertools.chain(*dup_list))

# create DF from the list
join_df = pd.DataFrame(flat_list, columns=['Letter'])

# and finally join two dataframes to multiply rows
merge_df = pd.merge(df, join_df, on='Letter')
print(merge_df) # the desired result

也许一些lambda表达式更简单?

感谢

0 个答案:

没有答案