我有一個如下資料框:
data = {'Age': [20, 30, 19, 21],'city1':['ny','nj','ln','tampa'],'country1':['usa','usa','usa','usa'],'city2':['london','edinburg',np.nan,'tampa'],
'country2':['uk','uk','uk','usa'],
'city1':['ny','london',np.nan,np.nan],'country2':['usa','uk',np.nan,np.nan]}
df1=pd.DataFrame(data)
print(df1)
Age city1 country1 city2 country2
0 20 ny usa london usa
1 30 london usa edinburg uk
2 19 NaN usa NaN NaN
3 21 NaN usa tampa NaN
現在我想創建一個新的資料框,其中age列值根據離開列的列數的一半重復age。在上面留下年齡列的資料框中,有四列的一半是 2。因此,年齡列的值必須重復兩次。一旦形成了新的年齡列,那么我需要追加city1, country1一行并city2,country2作為第二行(類似于例外輸出中所示的內容)。盡管我能夠將值重復為串列并嘗試從其他列中獲取值作為串列并附加為如下所示的行:-
code:-
#for repeating the value.
main_list = np.repeat(df1['Age'],2)
#for getting the column values
r=[]
for i in range(len(df1)):
r.append(df1.iloc[:,1:3].loc[i].values.tolist())
print(r)
[['ny', 'usa'], ['london', 'usa'], [nan, 'usa'], [nan, 'usa']]
city1,country1但是正如您所看到的,它只給出了city2,country2在將串列 r 值作為行附加到新資料框時引發錯誤的值,如下所示: -
newdata = {'Age':main_list}
res=pd.DataFrame(newdata)
print(res)
Age
0 20
0 20
1 30
1 30
2 19
2 19
3 21
3 21
res.loc[len(res)] = r
print(res)
ValueError: cannot set a row with mismatched columns
如何獲取例外的值串列并創建如下資料框:-
例外輸出:-
r =[['ny', 'usa'], ['london', 'usa'],['london', 'usa'],['edinburg','uk'],
[nan, 'usa'],[nan,nan],[nan, 'usa'],['tampa',nan]]
最終資料框:-
Age city country
0 20 'ny' 'usa'
0 20 'london' 'usa'
1 30 'london' 'usa'
1 30 'edinburg''uk'
2 19 NaN 'usa'
2 19 NaN NaN
3 21 NaN 'usa'
3 21 'tampa' NaN
uj5u.com熱心網友回復:
您還可以使用以下pivot_longer提供的功能janitor:
import janitor
df1.pivot_longer('Age', names_to = ['.value', 'group'], names_pattern = '(\\D )(\\d )')
Age group city country
0 20 1 ny usa
1 30 1 london usa
2 19 1 NaN usa
3 21 1 NaN usa
4 20 2 london usa
5 30 2 edinburg uk
6 19 2 NaN NaN
7 21 2 tampa NaN
uj5u.com熱心網友回復:
您可以使用wide_to_long:
(pd
.wide_to_long(df1.reset_index(),
stubnames=['city', 'country'], i=['index', 'Age'], j='id')
.droplevel(-1)
.reset_index('Age')
)
輸出:
Age city country
index
0 20 ny usa
0 20 london usa
1 30 london usa
1 30 edinburg uk
2 19 NaN usa
2 19 NaN NaN
3 21 NaN usa
3 21 tampa NaN
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/478277.html
