如果有人問過這個問題,我深表歉意,但我不知道如何正確提問,從而找到答案。
我有一個資料框:
val1 val2
val1 val3
val2 val1
val2 val3
我想在每個條目中附加一組年份:
val1 val2 1990
val1 val2 1991
val1 val2 1992
val1 val3 1990
val1 val3 1991
val1 val3 1992
等等......
我想出了如何只用一列值來做到這一點,但我已經添加了另一列,無法弄清楚如何復制這個程序。必須有一個簡單的方法來做到這一點,但我無法弄清楚,也找不到答案。我怎樣才能做到這一點?
uj5u.com熱心網友回復:
您可以在 Pandas 中使用交叉連接。
>>> df1 = pd.DataFrame({
'col1': ['val1', 'val1', 'val2', 'val2'],
'col2': ['val2', 'val3', 'val1', 'val3']
})
>>> df1
col1 col2
0 val1 val2
1 val1 val3
2 val2 val1
3 val2 val3
>>> df2 = pd.DataFrame({'col3': [1990, 1991, 1992]})
>>> df2
col3
0 1990
1 1991
2 1992
>>> pd.merge(df1, df2, how='cross')
col1 col2 col3
0 val1 val2 1990
1 val1 val2 1991
2 val1 val2 1992
3 val1 val3 1990
4 val1 val3 1991
5 val1 val3 1992
6 val2 val1 1990
7 val2 val1 1991
8 val2 val1 1992
9 val2 val3 1990
10 val2 val3 1991
11 val2 val3 1992
uj5u.com熱心網友回復:
一種方法是將串列分配給每一行,然后explode:
df["Year"] = [[1990, 1991, 1992]]*df.shape[0]
df = df.explode("Year")
>>> df
A B Year
0 val1 val2 1990
0 val1 val2 1991
0 val1 val2 1992
1 val1 val3 1990
1 val1 val3 1991
1 val1 val3 1992
2 val2 val1 1990
2 val2 val1 1991
2 val2 val1 1992
3 val2 val3 1990
3 val2 val3 1991
3 val2 val3 1992
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/371341.html
