![](/img/trans.png)
[英]How to sort a dataframe with the first occurences of each unique element in a column?
[英]Repeat elements of a DataFrame for each unique element in a given column
我的問題很簡單,可能有一種非常簡單的方法可以解決,但是在嘗試找到解決方案時,我已經花費了太多的耐心。
我有以下數據,我只是為了說明而編造的:
x1 = ['a','b','c']
x2 = [1,2,3,4]
x3 = ['y1','y2','y3','y4']
我想要做的是對於第一列的每個唯一元素,我想為該特定唯一值重復該數據幀的其余部分。 因此,獲得以下內容:
0 1 2
0 a 1 y1
1 a 2 y2
2 a 3 y3
3 a 4 y4
4 b 1 y1
5 b 2 y2
6 b 3 y3
7 b 4 y4
8 c 1 y1
9 c 2 y2
10 c 3 y3
11 c 4 y4
任何想法如何克服它?
使用帶有壓縮列的itertools.product
:
from itertools import product
df = pd.DataFrame([(a,b,c) for a, (b, c) in product(x1, zip(x2, x3))])
print (df)
0 1 2
0 a 1 y1
1 a 2 y2
2 a 3 y3
3 a 4 y4
4 b 1 y1
5 b 2 y2
6 b 3 y3
7 b 4 y4
8 c 1 y1
9 c 2 y2
10 c 3 y3
11 c 4 y4
如果輸入是 DataFrames 使用cross join
:
df1 = pd.DataFrame({'a':x1})
df2 = pd.DataFrame({'b':x2, 'c':x3})
df = df1.assign(val=1).merge(df2.assign(val=1), on='val').drop('val', axis=1)
print (df)
a b c
0 a 1 y1
1 a 2 y2
2 a 3 y3
3 a 4 y4
4 b 1 y1
5 b 2 y2
6 b 3 y3
7 b 4 y4
8 c 1 y1
9 c 2 y2
10 c 3 y3
11 c 4 y4
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.