注意 - 我问这个问题假设我的问题是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']等于“生日快乐”。
答案 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