遍历pandas DataFram中的每个元素

2024-05-14 13:42:15 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我得到了一个pandas数据框,只有一列和很多数据。

我需要访问每个元素,而不是更改它(使用apply()),而是将它解析为另一个函数。

当循环通过数据帧时,它总是在第一个数据帧之后停止。

如果我以前把它转换成一个列表,那么我的数字都是大括号(例如[12]而不是12),这样就破坏了我的代码。

有人知道我做错了什么吗?

import pandas as pd

def go_trough_list(df):
  for number in df:
    print(number)

df = pd.read_csv("my_ids.csv")
go_trough_list(df)

df看起来像:

   1
0  2
1  3
2  4
dtype: object
[Finished in 1.1s]

编辑:我发现了一个错误。我的第一个值被识别为头。 所以我把代码改成:

df = pd.read_csv("my_ids.csv",header=None)

但是

for ix in df.index:
    print(df.loc[ix])

我得到:

0    1
Name: 0, dtype: int64
0    2
Name: 1, dtype: int64
0    3
Name: 2, dtype: int64
0    4
Name: 3, dtype: int64

编辑:感谢耶斯雷尔和尼克,这是我的解决方案!

首先,我添加了headings=None,因为我的数据没有头。 然后我将函数改为:

def go_through_list(df)
    new_list = df[0].apply(my_function,parameter=par1)
    return new_list

而且效果很好!再次感谢各位,问题解决了。


Tags: csv数据函数代码nameingopandas
2条回答

假设您有一个名为“myColumn”的列,并且在dataframe上有一个索引(它是用read_csv自动创建的)。尝试使用.loc函数:

for ix in df.index:
    print(df.loc[ix]['myColumn'])

可以将列转换为Series^{}

for x in df['Colname'].tolist():
    print x

样品:

import pandas as pd

df = pd.DataFrame({'a': pd.Series( [1, 2, 3]),
                   'b': pd.Series( [4, 5, 6])})
print df
   a  b
0  1  4
1  2  5
2  3  6

for x in df['a'].tolist():
    print x
    1
    2
    3

如果只有一列,请使用^{}选择第一列:

for x in df.iloc[:,0].tolist():
    print x

样品:

import pandas as pd

df = pd.DataFrame({1: pd.Series( [2, 3, 4])})
print df
   1
0  2
1  3
2  4

for x in df.iloc[:,0].tolist():
    print x
    2
    3
    4  

这也可以工作,但不推荐使用这种方法,因为1可以是数字或字符串,并且它会引发密钥错误:

for x in df[1].tolist():
    print x
2
3
4

相关问题 更多 >

    热门问题