簡體   English   中英

向熊貓數據框添加新行的問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM