Python 如何将列表加载到DataFrame并迭代ItErrors?

Python 如何将列表加载到DataFrame并迭代ItErrors?,python,Python,我编写了以下代码: df = pandas.DataFrame(temp_data_list) return [X(first, rest.tolist()) for first, rest in df.iterrows()] temp_data_list是一个列表列表,例如[[a',1,2,3],'b',3,2,1]。我想将其转换为DataFrame并迭代iterrows,对于每个元素,首先插入'a'作为,其余的应该是[1,2,3]。出于某种原因,它将'a'插

我编写了以下代码:

        df = pandas.DataFrame(temp_data_list)
        return [X(first, rest.tolist()) for first, rest in df.iterrows()]
temp_data_list
是一个列表列表,例如
[[a',1,2,3],'b',3,2,1]
。我想将其转换为DataFrame并迭代
iterrows
,对于每个元素,首先插入
'a'
作为
,其余的应该是
[1,2,3]
。出于某种原因,它将
'a'
插入到其余部分。如何使其工作?

iterrows收益率(索引、值)

将熊猫作为pd导入
df=pd.DataFrame([[a',1,2,3],[b',3,2,1]]
对于idx,df.iterrows()中的行:
首先,*rest=row
打印(第一,其余)
如果,出于某种奇怪的原因,你想把它放在一行中

ret=[(first,rest)对于df.iterrows()中的idx,(first,*rest)
iterrows收益率(索引、值)

将熊猫作为pd导入
df=pd.DataFrame([[a',1,2,3],[b',3,2,1]]
对于idx,df.iterrows()中的行:
首先,*rest=row
打印(第一,其余)
如果,出于某种奇怪的原因,你想把它放在一行中

ret=[(first,rest)对于df.iterrows()中的idx,(first,*rest)

也许我误解了,但听起来这就是你想要的

import pandas as pd
temp_data_list = [['a',1,2,3],['b',3,2,1]]
df = pd.DataFrame(temp_data_list)
df = pd.DataFrame([pd.Series([df.iloc[i,0], list(df.iloc[i, 1:])]) for i in range(len(df))])


也许我误解了,但听起来这就是你想要的

import pandas as pd
temp_data_list = [['a',1,2,3],['b',3,2,1]]
df = pd.DataFrame(temp_data_list)
df = pd.DataFrame([pd.Series([df.iloc[i,0], list(df.iloc[i, 1:])]) for i in range(len(df))])


你和你的尝试非常接近。重要的是,
iterrows()
返回两个内容,一个索引值和行数据。因此,您必须接受该索引(
idx
如下)。另一件事是,您对问题的
其余部分所做的操作并不完全正确。这里有一行类似的代码,可以满足您的需要:

r = [X(first, rest) for idx, (first, *rest) in df.iterrows()]
下面是一个完整的工作示例,包括“X”的定义:

import pandas as pd

class X:
    def __init__(self, first, rest):
        self.first = first
        self.rest = rest
    def __repr__(self):
        return f"X('{self.first}', {self.rest})"

df = pd.DataFrame([['a',1,2,3],['b',3,2,1]])

r = [X(first, rest) for idx, (first, *rest) in df.iterrows()]

print(r)
结果:

[X('a', [1, 2, 3]), X('b', [3, 2, 1])]

你和你的尝试非常接近。重要的是,
iterrows()
返回两个内容,一个索引值和行数据。因此,您必须接受该索引(
idx
如下)。另一件事是,您对问题的
其余部分所做的操作并不完全正确。这里有一行类似的代码,可以满足您的需要:

r = [X(first, rest) for idx, (first, *rest) in df.iterrows()]
下面是一个完整的工作示例,包括“X”的定义:

import pandas as pd

class X:
    def __init__(self, first, rest):
        self.first = first
        self.rest = rest
    def __repr__(self):
        return f"X('{self.first}', {self.rest})"

df = pd.DataFrame([['a',1,2,3],['b',3,2,1]])

r = [X(first, rest) for idx, (first, *rest) in df.iterrows()]

print(r)
结果:

[X('a', [1, 2, 3]), X('b', [3, 2, 1])]

是的,我怎么能把它分成一行呢?你没说你想把它分成一行。你可以把我的答案变成一张理解清单。但是把所有的东西都塞进一行是什么困扰呢?你认为它会使你的代码看起来更聪明吗?是的,我怎么能把它分成一行?你并没有说你想把它分成一行。你可以把我的答案变成一张理解清单。但是把所有的东西都塞进一行是什么困扰呢?你认为这会让你的代码看起来更聪明吗?