python - 如何将两列(第一列具有相同的值)插入数据框
问题描述
下面是解释我想要什么的简单示例。我需要将第一个数据框的列添加到其他数据框:
import pandas as pd
df = pd.DataFrame({'Animal': ['Falcon', 'Falcon',
'Parrot', 'Parrot'],
'Max Speed': [380., 370., 24., 26.]})
outlets = pd.DataFrame(columns = ['mac', 'x'])
outlets = outlets.append({'mac' : 1, 'x' : [*df.Animal]}, ignore_index=True)
outlets
输出是:
mac x
0 1 [Falcon, Falcon, Parrot, Parrot]
但我真正想要的是:
mac x
0 1 Falcon
1 1 Falcon
2 1 Parrot
3 1 Parrot
请告诉我怎样才能做出我想要的...
解决方案
根据 append here的文档,您可以像这样合并两个数据框:
效率较低:
import pandas as pd
df = pd.DataFrame({'Animal': ['Falcon', 'Falcon',
'Parrot', 'Parrot'],
'Max Speed': [380., 370., 24., 26.]})
outlets = pd.DataFrame(columns = ['mac', 'x'])
for animal in [*df.Animal]:
outlets = outlets.append({'mac': 1,'x': animal}, ignore_index=True)
print(outlets)
更高效:
import pandas as pd
df = pd.DataFrame({'Animal': ['Falcon', 'Falcon',
'Parrot', 'Parrot'],
'Max Speed': [380., 370., 24., 26.]})
outlets = pd.concat(
[pd.DataFrame([[1, animal]], columns=['mac', 'x']) for animal in [*df.Animal]],
ignore_index=True)
print(outlets)
输出:
Less efficient:
mac x
0 1 Falcon
1 1 Falcon
2 1 Parrot
3 1 Parrot
More efficient:
mac x
0 1 Falcon
1 1 Falcon
2 1 Parrot
3 1 Parrot
推荐阅读
- java - 当写入大量数据时,部分数据会丢失/当每个数据都存在时,写入过程非常慢
- java - okhttp3 找不到可接受的协议
- spyder - 动态主题模型:主题混合
- python - 在 hv.Layout 或面板 Row,Column,Gridspec 中包含的各个绘图上设置独立缩放级别
- c# - 在没有 webview 的 Visual Studio 2017 中获取最终呈现的 html
- c# - 使用参数 TABLE OF INTEGER 参数调用存储过程
- javascript - 在递归中结束 imap-simple 连接
- flutter - Flutter/Dart - Android Manifest Permissions 在第一次构建时使应用程序崩溃
- javascript - 如何获取当前年份的第一个和最后一个日期javascript
- python - 在 Python 2 中打印值