首页 > 编程问答 >如何在Python中从两个不同长度的列表创建DataFrame,为第二个列表中的每个值重复第一个列表中的值

如何在Python中从两个不同长度的列表创建DataFrame,为第二个列表中的每个值重复第一个列表中的值

时间:2024-07-25 07:46:42浏览次数:10  
标签:python dataframe merge concatenation

我是一个超级初学者,所以请耐心等待。我觉得这应该很容易,但我无法弄清楚。我不确定是否应该创建两个列表,然后将它们组合起来,或者是否有办法以这种方式直接创建 DataFrame。

我需要一列包含这些值: df = pd.DataFrame({'x1':np.linspace(-2.47, 2.69, num=101)})

然后我将值 A、B、C、D 作为字符串。它可能是一个列表:

x2_values = [A, B, C, D]

或者也许不一定是?

我想最终得到一个 404 行的 DataFrame,其中对于 x2 的每个值,x1 的 101 个值重复 4 次。

所以像

x1 x2 1A 2A 3A 1乙 2乙 3乙 1℃ 2℃ 3C 1D 二维 3 D

我尝试使用 .concat 但无法工作。我还尝试用 for 循环填充 DataFrame,但无法让它没有错误。

我能够使用我在此处找到的列表理解来完成此操作作为参考:

dfB_x1 = [np.linspace(dfB.x1.min(), dfB.x1.max(), num=101)]

dfB_x2 = dfB.x2.unique().tolist()

dfB_viz = pd.DataFrame([(i,j) for i in dfB_x1 for j in dfB_x2], 
columns=['x1', 'x2'])

但最终得到了这个:

x1  x2
0   [-2.479836790901536, -2.428101497642494, -2.37...   C
1   [-2.479836790901536, -2.428101497642494, -2.37...   D
2   [-2.479836790901536, -2.428101497642494, -2.37...   A
3   [-2.479836790901536, -2.428101497642494, -2.37...   B

并且不得不使用.explode

我只是觉得应该有一个更简单的方法。我已经学会了迭代这样的元组或如何使用 .explode


当然可以帮助!可以使用 itertools.cycle zip 在 Python 中创建的 Pandas DataFrame。以下是如何操作:

import pandas as pd
import numpy as np
from itertools import cycle

# 创建 x1 值
x1 = np.linspace(-2.47, 2.69, num=101)

# 创建 x2 值
x2_values = ['A', 'B', 'C', 'D']

# 使用 itertools.cycle 创建 x2 值的循环迭代器
x2 = cycle(x2_values)

# 使用 zip 创建 (x1, x2) 值对的列表
data = [(a, b) for (a, b) in zip(x1, x2)]

# 创建 DataFrame
df = pd.DataFrame(data, columns=['x1', 'x2'])

# 打印 DataFrame
print(df)

此代码首先使用 np.linspace 创建一个包含 101 个值的 NumPy 数组 x1 。然后,它使用字符串创建一个列表 x2_values

此代码的关键是使用 itertools.cycle 函数,它创建一个迭代器,该迭代器无限期地循环遍历 x2_values 列表。这确保了即使 x1 x2_values 长, x2 也会为 x1 中的每个值分配一个值。

然后, zip 函数将 x1 x2 组合在一起,创建 (x1, x2) 对的迭代器。此迭代器用于使用 DataFrame 构造函数创建一个新的 Pandas DataFrame。

此方法创建了一个包含两列( x1 x2 )的 DataFrame,其中 x2 值针对 x1 的每个值重复。这正是想要实现的目标。

希望这有帮助!如果有任何其他 Python 或 Pandas 问题,请告诉我。

标签:python,dataframe,merge,concatenation
From: 78790971

相关文章

  • Python multiprocessing.connection.Connection 的行为不符合规范
    根据python规范,recv()pythonConnection的方法,(从multiprocessing.Pipe()返回,当管道为空且管道的另一端关闭时抛出EOFError(这里参考:https://docs.python.org/3.9/library/multiprocessing.html#multiprocessing.connection.Connection.re......
  • 使用 python Flask 发送邮件中的图像
    我想发送一封包含html代码和图像的电子邮件但在gmail中它说图像已附加,我不想要这样,我只想要电子邮件正文中的图像。html_content=f"<imgsrc="cid:banner"alt=""style="width:80%;">"msg=MIMEMultipart('related')html_part=MIMEText(html_c......
  • 在 python requests modul 中,如何检查页面是否使用“POST”方法或“GET”方法
    如何使用python“requests”模块检查页面是否使用“GET”方法或“POST”方法。我期望输出为True或False,或者GET或Post预期代码:importrequestsurl=f"www.get_example.com"response=requests.get(url)ifresponse.check_get==True:print("get")你......
  • VS Code Python - 如果括号(括号、大括号等)未关闭,内联建议不起作用
    我遇到的问题是,当我在未闭合的括号或方括号“内部”开始变量名称时,VSCode将不会显示任何建议。但是,如果在键入变量名称之前闭合括号,则建议效果很好。如果我可以避免它,我宁愿不将自动完成括号关闭设置为True也不使用TabOut扩展。第一个屏幕截图显示建议在闭括号/方......
  • 在 Azure 上部署代码时使用 Python 的多处理模块是否有意义?
    我们的团队在Azure机器学习(AML)上部署了一个Python脚本来处理存储在Azure存储帐户上的文件。我们的管道由一个ForEach活动组成,该活动调用每个或列出的文件的Python脚本。从Azure数据工厂(ADF)运行它会触发多个单独的管道同时运行......
  • 我已成功安装 pypdf2 但无法将其导入到我的 python 文件中
    我已经成功安装了pypdf2模块,但在导入它时,我发现该模块丢失了。我尝试使用fromPyPDF2importPdfReader导入,但它不起作用此问题的各种解决方案是什么?在尝试导入PyPDF2时遇到问题。以下是可能导致此问题的一些常见原因和解决方案:安......
  • Python3打开图片时请求ConnectionResetError(10054)
    我试图从'http://xxx.jpg'之类的网站下载图片。代码:headers={'user-agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/66.0.3359.139Safari/537.36'}url='http://xxx.jpg'resp......
  • Jupyter Notebook 环境中的 Python 版本不匹配
    我遇到Jupyter笔记本启动横幅中报告的Python版本与我在笔记本中查询python--version时显示的版本之间的差异。启动横幅指示Python3.11.9,但是当我运行!python--version时,它返回Python3.11.7。我所做的步骤:basecondahas3.11.7versio......
  • Python XML 解析:字符串中的“<”被阻塞
    我有一个使用ET.XMLParser来解析CppCheckXML报告文件的Python模块。当尝试解析字符串中包含“<”的XML元素中的属性之一时,它会令人窒息,它会将其解释为格式错误的XML,例如:<errormsg="Includefile<iostream>notfound.">(注意字符和“iostream”之间的空格必须放......
  • 任意几行代码要成为Python中的函数需要什么?
    我正在上一门计算机科学课,我的任务是创建一个程序来实现一个带有参数的函数。我的老师告诉我,下面的代码不是一个函数,这让我很困惑,对于将某些代码行归类为“函数”所需的条件,我感到很困惑。defgame(numbers,max_turns,pfl,tgl):turns=0flag=Falseprint("You......