4 回答

TA貢獻(xiàn)1934條經(jīng)驗 獲得超2個贊
用于
.applymap
將列轉(zhuǎn)換為np.array
s然后用來
.div
分列如果必須四舍五入,則在計算該列時?
result
附加, 。.apply(lambda x: np.round(x, 3))
np.round()
df['result'] = df.col1.div(df.col2).apply(lambda x: np.round(x, 3))
import numpy as np
import pandas as pd
data = {'col1': [[1,3,4,5], [1,4,5,5], [1,3,4,8]], 'col2': [[3,3,6,2], [3,8,4,3], [8,3,7,2]]}
df = pd.DataFrame(data)
# convert columns to arrays
df = df.applymap(np.array)
# divide the columns
df['result'] = df.col1.div(df.col2)

TA貢獻(xiàn)1842條經(jīng)驗 獲得超13個贊
您可以將列表理解與應(yīng)用一起使用,這是以兩個列表的長度相同為條件的
df['result'] = df.apply(lambda x: [np.round(x['col1'][i]/x['col2'][i], 2) for i in range(len(x['col1']))], axis = 1)
col1 col2 result
0 [1, 3, 4, 5] [3, 3, 6, 2] [0.33, 1.0, 0.67, 2.5]
1 [1, 4, 5, 5] [3, 8, 4, 3] [0.33, 0.5, 1.25, 1.67]
2 [1, 3, 4, 8] [8, 3, 7, 2] [0.12, 1.0, 0.57, 4.0]
編輯:正如@TrentonMcKinney 所建議的,這可以在不使用 LC 的情況下完成。該解決方案利用了 Numpy 的矢量化操作,
df.apply(lambda x: np.round(np.array(x[0]) / np.array(x[1]), 3), axis=1)

TA貢獻(xiàn)1786條經(jīng)驗 獲得超13個贊
df=df.apply(pd.Series.explode)#
df['result']=(df.col1.div(df.col2))
df.groupby(level=0)['result'].agg(list).reset_index()

TA貢獻(xiàn)1848條經(jīng)驗 獲得超6個贊
如果這些很大,你最好將它們轉(zhuǎn)換為 np.arrays 然后進(jìn)行除法:
df["col1"] = df["col1"].apply(np.array)
df["col2"] = df["col2"].apply(np.array)
df["output"] = df.col1/df.col2
添加回答
舉報