2 回答

TA貢獻1744條經(jīng)驗 獲得超4個贊
最終使用 jsmart 的貢獻并對其進行處理以生成一個新的數(shù)據(jù)框,保留原始 id,以便根據(jù)需要根據(jù) id 將舊列中的其他列合并到這個新列中(整個過程如下所示):
amount_needed = 5
df = pd.DataFrame({'base_number': [2, 4, 8, 0],
'std_dev': [1, 2, 3, 0]})
df['amount_needed'] = amount_needed
df['upper_bound'] = df['base_number'] + df['std_dev']
df['lower_bound'] = df['base_number'] - df['std_dev']
s1 = pd.Series([],dtype = int)
for row in df.itertuples():
arr = np.linspace(row.lower_bound,
row.upper_bound,
row.amount_needed)
s = pd.Series(arr).rename('base_number')
s1 = pd.concat([s1, s])
df_new = pd.DataFrame({'base_number': s1})
ids_og = list(range(1, len(df) + 1))
ids_og = [ids_og] * amount_needed
ids_og = sorted(list(itertools.chain.from_iterable(ids_og)))
df_new['id'] = ids_og

TA貢獻1906條經(jīng)驗 獲得超3個贊
一排df將創(chuàng)建一個系列(或一個數(shù)據(jù)框)。這是一種迭代df并使用您指定的值創(chuàng)建系列的方法:
for row in df.itertuples():
arr = np.linspace(row.lower_bound,
row.upper_bound,
row.amount_needed)
s = pd.Series(arr).rename('base_number')
print(s)
0 1.0
1 1.5
2 2.0
3 2.5
4 3.0
Name: base_number, dtype: float64
添加回答
舉報