python - 在循环中连接数据帧
问题描述
我正在为一些简单的事情而苦苦挣扎,这让我发疯。
为什么像下面这样的连接不会用 df1 + 附加列替换 df1?
df1 = pd.DataFrame({'A':[1, 2, 3], 'B':[4, 5, 6]})
df2 = pd.DataFrame({'A':[1, 2, 3], 'B':[4, 5, 6]})
df3 = pd.DataFrame({'C':[999, 999, 999]})
for table in [df1, df2]:
table = pd.concat((table, df3), axis=1)
df1
谢谢!
[编辑] 我需要分别获取 df1 和 df2:
解决方案
你有两个数据框。这些变量由两个变量名称“df1”和“df2”引用。现在,您在别名“table”下循环遍历这些数据帧。在循环内部,“table”被重新分配给concat
. 由于concat
不是就地,原始数据帧都没有被修改。
我的建议是维护一个 DataFrame 列表。
df_list = [df1, df2]
现在,修改列表:
for i, df in enumerate(df_list):
df_list[i] = pd.concat([df, df3], axis=1)
df_list
将反映更新,因为它现在将保存新创建的concat
输出。
df1, df2 = df_list
print(df1)
A B C
0 1 4 999
1 2 5 999
2 3 6 999
print(df2)
A B C
0 1 4 999
1 2 5 999
2 3 6 999
推荐阅读
- php - Laravel 5 Artisan::call 无法正常工作
- java - Gradle 定义一个过滤器以供多次使用
- selenium-webdriver - 如何让 xpath 包含另一个 xpath?
- laravel - 从 laravel Url 中删除 public 后如何将 vuejs 与 laravel 一起使用?
- c# - 自定义序列化为 JSON 以保留一些字段
- javascript - 如何在 Signalr connection.on() 中设置组件的状态
- java - 我应该将 Java 应用程序的图像放在哪里?
- node.js - MongoDB 非规范化数据和变更流
- hadoop - Apache-Hadoop-Common 无法编译:运行 javah 命令时出错
- netlogo - 在参数列表列表上应用函数列表