例如資料框:
import pandas as pd
df = pd.DataFrame.from_dict({
'art1':['n1','n2'],
'sizes':['35 36 37', '36 38']
})
print (df)
# need that
df_result = pd.DataFrame.from_dict({
'art1':['n1','n1','n1','n2','n2'],
'sizes':[35,36,37,36,38]
})
print (df_result)
以下是正確但不有效的決定!
lst_art = []
lst_sizes = [x.split() for x in df['sizes']]
for i in range(len(lst_sizes)):
for j in range(len(lst_sizes[i])):
lst_art.append(df['art1'][i])
lst_sizes = sum(lst_sizes, [])
df = pd.DataFrame({'art1':lst_art, 'sizes':lst_sizes})
print (df)
任何從 df 獲取 df_result 的 pandas 有效方法?
uj5u.com熱心網友回復:
您可以先將字串列拆分為一個串列,然后您可以將串列中的每個專案分解為一個新行
df = pd.DataFrame.from_dict({
'art1':['n1','n2'],
'sizes':['35 36 37', '36 38']
})
# convert str to list
df['sizes'] = df['sizes'].str.split()
# create one new row per item in list of `sizes`
df_result = df.explode('sizes')
或者你可以做一個過于強大的一個班輪
df.assign(sizes=df['sizes'].str.split()).explode('sizes')
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/521667.html
