python - 在 Pandas 中将列表添加到数据框的两列?
问题描述
我有以下代码。
import pandas as pd
def generate_list(row):
return [row['A']*2, row['B']*3]
def main():
data = {
'A':[0, 2, 3],
'B':[4, 15, 6]}
df = pd.DataFrame(data)
# applying function to each row in
df['C'], df['D'] = df.apply(lambda row: generate_list(row), axis=1)
if __name__ == '__main__':
main()
该代码只是将一个函数应用于我的 df 的每一行,并将结果作为列表返回。我正在尝试将返回列表的每个元素添加到两个新列中。但是,我收到以下错误:
df['C'], df['D'] = df.apply(lambda row: generate_list(row), axis=1)
ValueError: too many values to unpack (expected 2)
解决方案
代替:
df['C'], df['D'] = df.apply(lambda row: generate_list(row), axis=1)
和:
df[['C','D']] = pd.DataFrame(df.apply(lambda row: generate_list(row), axis=1).tolist(), index= df.index)
return df
给你:
A B C D
0 0 4 0 12
1 2 15 4 45
2 3 6 6 18
推荐阅读
- javascript - 我的 ajax 请求不返回数据但返回一个空数组
- sockets - 有没有办法通过 TCP 转发 UDP 流量?
- scala - isEmpty 为空集返回 false
- c - 具有相应字母的随机数生成器
- amazon-web-services - Aws 极光 + Lambda
- node.js - 基于另一个集合 mongoose 更新集合上的虚拟字段
- php - Laravel Backpack 中每个 Event Crud 的单独 SMTP
- java - 如何使用 Java 在调用(当前)shell 中运行 shell 命令
- javascript - 如何使复选框在 24 中仅单击一次?
- java - Flink 任务管理器超时