我手边有一项任务,我想为相同大小的聚类算法准备输入。 输入包含重复的行,用于更重要的观察,重要性的重量作为行数提供。
无论如何,我有一个在列中具有所需行数的数据帧。是否有一些在数据框中创建重复项的简单方法?
以下是一个例子:
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表达式更简单?
感谢