所以我得到了一个包含单列和大量数据的 pandas DataFrame。
我需要访问每个元素,而不是更改它(使用 apply()),而是将其解析为另一个函数。
当循环遍历 DataFrame 时,它总是在第一个之后停止。
如果我之前将其转换为列表,那么我的数字都在大括号中(例如 [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
编辑:感谢 jezrael 和 Nick,这是我的解决方案!
首先我添加了 headings=None
因为我的数据没有标题。然后我将我的功能更改为:
def go_through_list(df)
new_list = df[0].apply(my_function,parameter=par1)
return new_list
而且效果很好!再次感谢各位,问题解决了。
原文由 Ali 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以像在其他答案中一样使用索引,也可以遍历 df 并像这样访问该行:
但是,如果性能有任何问题,我建议以不同的方式解决问题。另外,如果只有一列,使用 Pandas Series 更正确。
你把它解析成另一个函数是什么意思?也许获取价值,对其进行处理并将其创建到另一列中?
也许这个例子会有所帮助: