我收到的数据是单列中的字典列表。每个列表的长度可以不同。示例数据如下所示:
df = pd.DataFrame(
[
[[{'value': 1}, {'value': 2}, {'value': 3}]],
[[{'value': 4}, {'value': 5}]]
],
columns=['data'],
)
df
data
0 [{'value': 1}, {'value': 2}, {'value': 3}]
1 [{'value': 4}, {'value': 5}]
我想创建一个新列
min_val
,其中包含每行的最小值。我正在尝试这个:
df.assign(min_val=lambda row: min(val['value'] for val in row.data))
但是我收到错误:
TypeError: list indices must be integers or slices, not str
非常相似的 lambda/推导式组合在 Dask Bag 中有效,但在原始 Pandas 中无效,这非常令人困惑。
任何帮助将非常感激。
df['min_val'] = df['data'].apply(lambda x: min(item['value'] for item in x))