我有一個串列資料框,看起來類似于下面的串列(圖 a)。有一個鍵列,后跟包含串列的n列。我的目標是,對于每一行,我會將每一列中的串列(不包括鍵)組合成一個新列中的串列,combined . 我想要的結果的一個例子如下圖 B 所示。
我已經嘗試了一些使用 iteritems() 的方法,但是這些資料幀有可能長達數十萬到數百萬行,這使得它非常慢。所以我試圖避免使用它的解決方案。
我想使用類似
圖B

uj5u.com熱心網友回復:
您可以在 python 中添加串列
df['combined'] = df['valueA'] df['valueB'] df['valueN']
或者對于多列:
df['combined'] = [[] for _ in range(len(df))]
for letter in ['A', 'B', 'C', ...., 'N']:
df['combined'] = df[f'value{letter}']
uj5u.com熱心網友回復:
首先,您應該將這些列合并到一個新列中:
merge_columns = list(dataSet.columns)
merge_columns.remove("key")
dataSet["combined"] = dataSet[merge_columns].values.tolist()
然后你應該從每行的串列串列中創建一個串列:
dataSet["combined"] = dataSet["combined"].apply(lambda x: [item for sublist in x for item in sublist])
uj5u.com熱心網友回復:
您可以簡單地選擇包含串列的列,然后用 對列求和.sum(axis=1)。
它是這樣作業的:
import pandas as pd
data = {
'key': ['1_1', '1_2', '1_3'],
'valueA': [[1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11, 12], [13, 14, 15, 16, 17, 18]],
'valueB': [[1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11, 12], [13, 14, 15, 16, 17, 18]],
'valueN': [[1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11, 12], [13, 14, 15, 16, 17, 18]],
}
dataSet = pd.DataFrame(data)
columns_to_combine = ['valueA', 'valueB', 'valueN']
dataSet['combined'] = dataSet[columns_to_combine].sum(axis=1)
dataSet.drop(columns=columns_to_combine, inplace=True) # remove the old columns
print(dataSet)
# output:
# key combined
# 0 1_1 [1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6]
# 1 1_2 [7, 8, 9, 10, 11, 12, 7, 8, 9, 10, 11, 12, 7, 8, 9, 10, 11, 12]
# 2 1_3 [13, 14, 15, 16, 17, 18, 13, 14, 15, 16, 17, 18, 13, 14, 15, 16, 17, 18]
uj5u.com熱心網友回復:
這是實作目標的最簡單方法。
dataSet['Lists'] = dataSet['valueA'] dataSet['valueB'] dataSet['valueN'] dataSet.drop(columns=['valueA','valueB',"valueN"],inplace=True) print(dataSet)
uj5u.com熱心網友回復:
您可以使用嵌套串列推導:
dataSet['combined'] = [[e for l in x for e in l]
for _,x in dataSet.filter(like='value').iterrows()]
輸出:
key valueA valueB valueN combined
0 1_1 [1, 2, 3, 4, 5, 6] [1, 2, 3, 4, 5, 6] [1, 2, 3, 4, 5, 6] [1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6]
1 1_2 [7, 8, 9, 10, 11, 12] [7, 8, 9, 10, 11, 12] [7, 8, 9, 10, 11, 12] [7, 8, 9, 10, 11, 12, 7, 8, 9, 10, 11, 12, 7, 8, 9, 10, 11, 12]
2 1_3 [13, 14, 15, 16, 17, 18] [13, 14, 15, 16, 17, 18] [13, 14, 15, 16, 17, 18] [13, 14, 15, 16, 17, 18, 13, 14, 15, 16, 17, 18, 13, 14, 15, 16, 17, 18]
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/476619.html
上一篇:高級懸停按鈕
