我有以下資料框
data = [[[[[1, 2, 0], [1]],[[1, 2], [4]]],
[[[[1, 2], [4]]]], [[[1]]]], [[[[1, 2, 0], [1]],[[1, 2], [4]]],
[[[[1, 2], [4]]]], [[[1]]]]]
df = pd.DataFrame(data)
另外,我有第二個資料框df2:
data2 = [[1, 10], [1, 15], [1, 14], [1, 20], [1, 18]]
df2 = pd.DataFrame(data2, columns=['dir', 'line'])
的嵌套串列的值df表示Index的df2。我想df用 的列行的值替換嵌套串列的值df2。預期的輸出如下:
finalData = [[[[[15, 14, 10], [15]],[[15, 14], [20]]],
[[[[15, 14], [20]]]], [[[15]]]], [[[[15, 14, 10], [15]],[[15, 14], [20]]],
[[[[15, 14], [29]]]], [[[15]]]]]
finaldf = pd.DataFrame(finalData)
uj5u.com熱心網友回復:
試試這個遞回解決方案
data = [[[[[1, 2, 0], [1]],[[1, 2], [4]]],
[[[[1, 2], [4]]]], [[[1]]]], [[[[1, 2, 0], [1]],[[1, 2], [4]]],
[[[[1, 2], [4]]]], [[[1]]]]]
data2 = [[1, 10], [1, 15], [1, 14], [1, 20], [1, 18]]
def new_data(data, data2):
res = []
for i in data:
if isinstance(i, list):
res.append(new_data(i, data2))
else:
res.append(data2[i][1])
return res
final_data = new_data(data, data2)
print(final_data)
# output:
[[[[[15, 14, 10], [15]], [[15, 14], [18]]], [[[[15, 14], [18]]]], [[[15]]]],
[[[[15, 14, 10], [15]], [[15, 14], [18]]], [[[[15, 14], [18]]]], [[[15]]]]]
uj5u.com熱心網友回復:
給你。
data = [[[[[1, 2, 0], [1]],[[1, 2], [4]]],
[[[[1, 2], [4]]]], [[[1]]]], [[[[1, 2, 0], [1]],[[1, 2], [4]]],
[[[[1, 2], [4]]]], [[[1]]]]]
df = pd.DataFrame(data)
data2 = [[1, 10], [1, 15], [1, 14], [1, 20], [1, 18]]
df2 = pd.DataFrame(data2, columns=['dir', 'line'])
def fn(index):
if isinstance(index, list):
return [fn(i) for i in index]
else:
return df2['line'][index]
final = df.applymap(fn)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/530229.html
下一篇:如何將二維串列轉置為列視圖?
