2 回答

TA貢獻(xiàn)1833條經(jīng)驗(yàn) 獲得超4個(gè)贊
您只能選擇一列,但由于重復(fù)的列名稱被選擇,因此選擇了具有相同標(biāo)簽的所有列,然后轉(zhuǎn)換為1dnumpy 數(shù)組并傳遞給DataFrame構(gòu)造函數(shù):
print (df['ID'])
ID ID ID
0 1 2 3
df = pd.DataFrame({'ID': df['ID'].to_numpy().ravel(),
'Name': df['Name'].to_numpy().ravel(),
'Email_id': df['Email_id'].to_numpy().ravel()})
print (df)
ID Name Email_id
0 1 A A@gmail.com
1 2 B B@gmail.com
2 3 C C@gmail.com
另一個(gè)想法是MultiIndex在列中創(chuàng)建GroupBy.cumcount并通過以下方式重塑DataFrame.stack:
s = df.columns.to_series()
df.columns = [s, s.groupby(s).cumcount()]
print (df)
ID Name Email_id ID Name Email_id ID Name Email_id
0 0 0 1 1 1 2 2 2
0 1 A A@gmail.com 2 B B@gmail.com 3 C C@gmail.com
df = df.stack().reset_index(drop=True)
print (df)
Email_id ID Name
0 A@gmail.com 1 A
1 B@gmail.com 2 B
2 C@gmail.com 3 C

TA貢獻(xiàn)1993條經(jīng)驗(yàn) 獲得超6個(gè)贊
如果您確實(shí)知道這樣的數(shù)據(jù)結(jié)構(gòu)是一致的,您可以按索引對(duì)數(shù)據(jù)進(jìn)行切片,然后連接它們:
pd.concat([df.iloc[:, i:i+3] for i in range(0, df.shape[1], 3)])
要確保獲取列 ID:
import numpy as np
# Get the target indexes
idx = np.arange(df.shape[1])[df.columns=='ID']
idx = np.append(idx, df.shape[1])
# Slice and concatenate data
pd.concat([df.iloc[:, idx[i]:idx[i+1]] for i in range(len(idx)-1)])
添加回答
舉報(bào)