我在添加熊貓列方面存在問題。 我有DataFrame,尺寸是nxk。在過程中,我需要添加維度爲mx1的列,其中m = [1,n],但我不知道m。添加不同長度的熊貓列
當我試圖做到這一點:
df['Name column'] = data
# type(data) = list
結果:
AssertionError: Length of values does not match length of index
我可以添加列不同長度?
我在添加熊貓列方面存在問題。 我有DataFrame,尺寸是nxk。在過程中,我需要添加維度爲mx1的列,其中m = [1,n],但我不知道m。添加不同長度的熊貓列
當我試圖做到這一點:
df['Name column'] = data
# type(data) = list
結果:
AssertionError: Length of values does not match length of index
我可以添加列不同長度?
使用CONCAT並通過axis=1
和ignore_index=True
:
In [38]:
import numpy as np
df = pd.DataFrame({'a':np.arange(5)})
df1 = pd.DataFrame({'b':np.arange(4)})
print(df1)
df
b
0 0
1 1
2 2
3 3
Out[38]:
a
0 0
1 1
2 2
3 3
4 4
In [39]:
pd.concat([df,df1], ignore_index=True, axis=1)
Out[39]:
0 1
0 0 0
1 1 1
2 2 2
3 3 3
4 4 NaN
如果使用公認的答案,你會失去你的列名,如圖接受的答案例如,並在documentation(重點描述加):
所得軸將被標記爲0,...,N - 1。如果你在哪裏級聯軸確實不 HAV級聯對象,這是有用e有意義的索引信息。
它看起來像你的列名('Name column'
)是有意義的。
您可以使用pandas.concat
,但不ignore_index
(的ignore_index
默認值是false
,這樣你就可以忽略這樣的說法完全):
import pandas
# Note these columns have 3 rows of values:
original = pandas.DataFrame({
'Age':[10, 12, 13],
'Gender':['M','F','F']})
# Note this column has 4 rows of values:
additional = pandas.DataFrame({
'Name': ['Nate A', 'Jessie A', 'Daniel H', 'John D']
})
new = pandas.concat([original, additional], axis=1)
# Identical:
# new = pandas.concat([original, additional], ignore_index=False, axis=1)
print(new.head())
# Age Gender Name
#0 10 M Nate A
#1 12 F Jessie A
#2 13 F Daniel H
#3 NaN NaN John D
注意約翰·d怎麼沒有一個時代或性別。
@TheRedPea我把你的編輯回來了,你的建議應該是一個評論,而不是我的答案的編輯,因爲編輯應該用來改善或糾正一個答案,而不是建議替代答案 – EdChum 2015-10-28 20:45:10
我認爲它是一個改進。如果你認爲這是一個替代方案,我會發佈一個單獨的答案。 – 2015-10-29 00:36:29