从行列表创建DataFrame,并迭代它

时间:2015-05-14 20:28:06

标签: python pandas

注意 - 我问这个问题假设我的问题是DataFrame构造函数,但实际上我的问题是iterrows()

我想从一个列的行创建一个pandas DataFrame,其中每一行都是一个值列表。我尝试过以下方法:

multigram_counts = [
    ["happy birthday", 23],
    ["used below", 10],
    ["frame for", 2]
]
df = pd.DataFrame(multigram_counts, columns = ["phrase", "count"])
df_iter = df.iterrows()
frow = df_iter.next()
self.assertEqual(frow['phrase'], "happy birthday")

但是我收到以下错误:

TypeError: tuple indices must be integers, not str

如何解决这个问题,以便我的“assertEqual”函数中的两个参数确实相等?也就是说,我希望frow ['phrase']等于“生日快乐”。

3 个答案:

答案 0 :(得分:2)

df_iter包含(index,row)作为元组,只获取行,试试这个:

f_index, frow = df_iter.next()

答案 1 :(得分:1)

你的frow变量是一个元组,你把它称为dict,如果我是你,我会调试它以了解frow的值是多少。

答案 2 :(得分:1)

如果您只是想要第一行,请使用iloc

,以下内容适用于我
In [99]:

multigram_counts = [
    ["happy birthday", 23],
    ["used below", 10],
    ["frame for", 2]
]
df = pd.DataFrame(multigram_counts, columns = ["phrase", "count"])
​
df.iloc[0]['phrase'] == 'happy birthday'
Out[99]:
True

df看起来像这样:

In [100]:

df
Out[100]:
           phrase  count
0  happy birthday     23
1      used below     10
2       frame for      2