[英]Issues with adding new rows to a pandas dataframe
抱歉,如果格式不正確,這是我第一次發布任何內容。 我已經在Python中創建了一個多索引數據框架,該框架工作正常:
arrays = [['one','one', 'two', 'two'],
['A','B','A','B']]
tuples = list(zip(*arrays))
mindex = pd.MultiIndex.from_tuples(tuples)
s = pd.DataFrame(data=np.random.randn(4), index=mindex, columns=(['Values']))
s
這個工作正常,除了我認為我應該能夠通過簡單地輸入來添加新行
s['Values'].loc[('Three', 'A')] = 1
s['Values'].loc[('Three','B')]= 2
這不會返回任何錯誤消息,我可以通過輸入以下命令來檢查它是否起作用
s['Values'].loc[('Three', 'A')]
這給了我1.一切都如預期。 但是,我看不到Jupyter筆記本中的“三”數據-如果只是鍵入
s
那么它只會顯示原始的一,二,A和B行。 這可能是因為新行不是索引:
s.index
回報
MultiIndex(levels=[['one', 'two'], ['A', 'B']],
labels=[[0, 0, 1, 1], [0, 1, 0, 1]])
有人可以給我提示一下這里發生了什么嗎? 我希望隨后添加的行出現在索引中。 我應該改用.append函數嗎? 似乎有點麻煩,其他帖子建議使用上面的.loc方法添加行。
謝謝!
我相信您需要在DataFrame.loc
函數中選擇列:
s.loc[('Three', 'A'), 'Values'] = 1
s.loc[('Three', 'B'), 'Values'] = 2
print (s)
Values
one A -0.808372
B 0.904552
two A -0.443619
B 1.157234
Three A 1.000000
B 2.000000
print (s.index)
MultiIndex(levels=[['one', 'two', 'Three'], ['A', 'B']],
labels=[[0, 0, 1, 1, 2, 2], [0, 1, 0, 1, 0, 1]])
因為您的解決方案將值添加到列( Series
),而不是添加到DataFrame
:
s['Values'].loc[('Three', 'A')] = 1
print (s['Values'])
one A -0.808372
B 0.904552
two A -0.443619
B 1.157234
Three A 1.000000
Name: Values, dtype: float64
print (s)
Values
one A -0.808372
B 0.904552
two A -0.443619
B 1.157234
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.