pandas 插入空列_Pandas在DF创建期间添加额外的空列(Pandas add additional empty columns during DF creation)...
Pandas在DF創(chuàng)建期間添加額外的空列(Pandas add additional empty columns during DF creation)
我越來(lái)越:
AssertionError: 14 columns passed, passed data had 12
columns.
錯(cuò)誤是不言自明的,我正在從列表列表中創(chuàng)建一個(gè)DataFrame,每個(gè)列表實(shí)際上包含12個(gè)字段。 如何強(qiáng)制pandas.DataFrame在一次操作中添加帶NaN的額外列。 這就是我創(chuàng)建df的方式。
pandas.DataFrame(results, columns=FIELDS)
有沒(méi)有辦法在DataFrame創(chuàng)建中簡(jiǎn)化這一點(diǎn),而不必這樣做:
pandas.DataFrame(results, columns=FIELDS_12)
df["ExtraField13"] = np.nan
df["ExtraField14"] = np.nan
I'm getting:
AssertionError: 14 columns passed, passed data had 12
columns.
Error is self-explanatory, I'm creating a DataFrame from a list of lists, each list in fact contains 12 fields. How can I force pandas.DataFrame to add extra columns with NaN in one operation. This is how Im creating the df.
pandas.DataFrame(results, columns=FIELDS)
Is there a way to simplify this in DataFrame creation, without having to do this:
pandas.DataFrame(results, columns=FIELDS_12)
df["ExtraField13"] = np.nan
df["ExtraField14"] = np.nan
原文:https://stackoverflow.com/questions/42238024
2020-02-27 23:56
滿意答案
好吧,你不需要像上面那樣用逐行的單獨(dú)列分配硬編碼。 這做了類似的事情,但使用循環(huán)代替填充列:
>>> import pandas as pd
>>> df = pd.DataFrame({'A': [1,2,3], 'B': [4,5,6]})
>>> df
A B
0 1 4
1 2 5
2 3 6
>>> def pad_cols(df, n_cols):
... while len(df.columns) < n_cols:
... df['padded' + str(len(df.columns)+1)] = None
... return df
...
>>> pad_cols(df, 4)
A B padded3 padded4
0 1 4 None None
1 2 5 None None
2 3 6 None None
Well, you don't really have to hard-code things like you have above with individual column assignments, line-by-line. This does a similar thing but uses a loop instead to pad columns:
>>> import pandas as pd
>>> df = pd.DataFrame({'A': [1,2,3], 'B': [4,5,6]})
>>> df
A B
0 1 4
1 2 5
2 3 6
>>> def pad_cols(df, n_cols):
... while len(df.columns) < n_cols:
... df['padded' + str(len(df.columns)+1)] = None
... return df
...
>>> pad_cols(df, 4)
A B padded3 padded4
0 1 4 None None
1 2 5 None None
2 3 6 None None
2017-02-14
相關(guān)問(wèn)答
我想使用DataFrame ctor進(jìn)行連接: In [23]:
df = pd.DataFrame(columns=['A'])
df
Out[23]:
Empty DataFrame
Columns: [A]
Index: []
In [24]:
pd.concat([df,pd.DataFrame(columns=list('BCD'))])
Out[24]:
Empty DataFrame
Columns: [A, B, C, D]
Index: []
因此,通過(guò)傳遞一個(gè)包...
這是一種方法。 根據(jù)您的數(shù)據(jù),這可能會(huì)混合類型(例如,如果一列是時(shí)間戳)。 此外,這會(huì)重置您的指數(shù)。 mega = pd.DataFrame(np.random.randn(3,3), columns=list('ABC'))
indexRow = pd.DataFrame({col: [n] for n, col in enumerate(mega)})
>>> pd.concat([indexRow, mega], ignore_index=True)
A ...
你的方法可能很慢,因?yàn)樗鼪](méi)有矢量化。 這是另一種方法: temp = df['col_1'].astype(str)
df = df.assign(col_2='Other', col_3='Other')
df.loc[temp.str[0] == '9', ['col_2', 'col_3']] = ('some_text_4 ', 'other_text_4')
df.loc[temp.str[0:2] == '67', ['col_2', 'col_3']] = ('some_text_3...
注釋中發(fā)布的AttributeError非常重要 - 您有一個(gè)Series,相當(dāng)于一個(gè)列,而不是DataFrame。 main_df.to_frame()
將返回一個(gè)數(shù)據(jù)幀,然后您可以重命名列并添加新列。 That AttributeError posted in the comments is important – you have a Series, equivalent to a single column, not a DataFrame. main_df.to_frame()
wi...
這是另一種使用numpy select (這里的文檔)的方法 ,它具有非常干凈的語(yǔ)法: df['D'] = np.select( [ df.A < 1.5, df.A > 2.5 ],
[ df.B + df.C, df.B * df.C ], default=0 )
A B C D
1 1 4 7 11
2 2 5 8 0
3 3 6 9 54
無(wú)論如何它默認(rèn)為零,但我補(bǔ)充說(shuō)完整性。 我想在@ DSM或@H...
使用dplyr和tidyr解決方案。 library(dplyr)
library(tidyr)
dt2 %
mutate(condition = 1) %>%
spread(loc, condition, fill = 0)
dt2
# file_name chr1:62161618:62162663:- chr1:62161618:62162669:-
# 1 rep1 1 ...
你可以試試這個(gè): # names of columns in df2 that are not in df1
cols
# ...or
cols
# add cols from d2 to df1
df3
# set cols from df1 to ...
建立 df1
terms code1 code2 code3
0 term1 1234x 2345x 3456x
1 term2 4321y 5432y 6543y
df2
name rate location code
0 Dan 3 FL 4444g
1 Sara 3.5 OH 6543y
2 Conroy 5.2 NM 2345x
以空間為代價(jià),一種快速的方法是生成兩個(gè)映射,然后...
好吧,你不需要像上面那樣用逐行的單獨(dú)列分配硬編碼。 這做了類似的事情,但使用循環(huán)代替填充列: >>> import pandas as pd
>>> df = pd.DataFrame({'A': [1,2,3], 'B': [4,5,6]})
>>> df
A B
0 1 4
1 2 5
2 3 6
>>> def pad_cols(df, n_cols):
... while len(df.columns) < n_cols:
... df['pad...
相關(guān)文章
在菜單中 增加了 click點(diǎn)擊事件,事件代碼如下: 'click' : function(n){
...
mlzboy@mlzboy-mac:/var$ ls -al 總用量 4048 drwxr-xr-x
...
[A] aaa accounting delay-start [12.1] [hidden] gl
...
先看示例: ${user.name?if_exists }, ${user.name?default(
...
用過(guò)struts的標(biāo)簽,也接觸過(guò)spring的標(biāo)簽,不過(guò)我個(gè)人覺(jué)得el表達(dá)式是最好用的。el表達(dá)式判斷
...
新增一個(gè)節(jié)點(diǎn)6383,并啟動(dòng) 執(zhí)行redis-trib.rb add-node命令添加節(jié)點(diǎn) redi
...
DecimalFormat是NumberFormat的一個(gè)具體子類,用于格式化十進(jìn)制數(shù)字。 在日常開(kāi)發(fā)
...
啥也不說(shuō)鳥(niǎo),上代碼,只要頁(yè)面引用了相應(yīng)的ext的js庫(kù),就能運(yùn)行: Ext.onReady(func
...
最新問(wèn)答
如果啟用了復(fù)制處理程序,請(qǐng)確保將其置于其中一個(gè)安全角色之后。 我見(jiàn)過(guò)人們做的另一件事是在不同的端口上運(yùn)行admin。 最好在需要auth的頁(yè)面上使用SSL,這樣你就不會(huì)發(fā)送明確的密碼,因此管理和復(fù)制將發(fā)生在8443上,而常規(guī)查詢將在8080上發(fā)生。 如果您要簽署自己的證書,請(qǐng)查看此有用的SO頁(yè)面: 如何在特定連接上使用不同的證書? I didn't know that /admin was the context for SOLR admin because /admin does not re
第一:在您的樣本中,您有: 但是你在詢問(wèn) //td[@class=‘CarMiniProfile-TableHeader’] (注意TableHeader中的大寫'T')。 xpath區(qū)分大小寫。 第二:通過(guò)查詢// td [@ class ='CarMiniProfile-TableHeader'] / td,你暗示你在外部td中有一個(gè)'td'元素,而它們是兄弟姐妹。 有很多方法可以在這里獲得制作和模型
這是你的答案: http://jsfiddle.net/gPsdk/40/ .preloader-container { position: absolute; top: 0px; right: 0px; bottom: 0px; left: 0px; background: #FFFFFF; z-index: 5; opacity: 1; -webkit-transition: all 500ms ease-out;
問(wèn)題是,在啟用Outlook庫(kù)引用的情況下, olMailItem是一個(gè)保留常量,我認(rèn)為當(dāng)您將Dim olMailItem as Outlook.MailItem ,這不是問(wèn)題,但是嘗試設(shè)置變量會(huì)導(dǎo)致問(wèn)題。 以下是完整的解釋: 您已將olMailItem聲明為對(duì)象變量。 在賦值語(yǔ)句的右側(cè),在將其值設(shè)置為對(duì)象的實(shí)例之前,您將引用此Object 。 這基本上是一個(gè)遞歸錯(cuò)誤,因?yàn)槟阌袑?duì)象試圖自己分配自己。 還有另一個(gè)潛在的錯(cuò)誤,如果之前已經(jīng)分配了olMailItem ,這個(gè)語(yǔ)句會(huì)引發(fā)另一個(gè)錯(cuò)誤(可能是
我建議使用wireshark http://www.wireshark.org/通過(guò)記錄(“捕獲”)設(shè)備可以看到的網(wǎng)絡(luò)流量副本來(lái)“監(jiān)聽(tīng)”網(wǎng)絡(luò)上發(fā)生的對(duì)話。 當(dāng)您開(kāi)始捕獲時(shí),數(shù)據(jù)量似乎過(guò)大,但如果您能夠發(fā)現(xiàn)任何看起來(lái)像您的SOAP消息的片段(應(yīng)該很容易發(fā)現(xiàn)),那么您可以通過(guò)右鍵單擊并選擇來(lái)快速過(guò)濾到該對(duì)話'關(guān)注TCP Stream'。 然后,您可以在彈出窗口中查看您編寫的SOAP服務(wù)與Silverlight客戶端之間的整個(gè)對(duì)話。 如果一切正常,請(qǐng)關(guān)閉彈出窗口。 作為一個(gè)額外的好處,wireshar
Android默認(rèn)情況下不提供TextView的合理結(jié)果。 您可以使用以下庫(kù)并實(shí)現(xiàn)適當(dāng)?shù)腶ligntment。 https://github.com/navabi/JustifiedTextView Android Does not provide Justified aligntment of TextView By default. You can use following library and achieve proper aligntment. https://github.com/
你的代碼適合我: class apples { public static void main(String args[]) { System.out.println("Hello World!"); } } 我將它下載到c:\ temp \ apples.java。 以下是我編譯和運(yùn)行的方式: C:\temp>javac -cp . apples.java C:\temp>dir apples Volume in drive C is HP_PAV
12個(gè)十六進(jìn)制數(shù)字(帶前導(dǎo)0x)表示48位。 那是256 TB的虛擬地址空間。 在AMD64上閱讀wiki(我假設(shè)你在上面,對(duì)嗎?)架構(gòu)http://en.wikipedia.org/wiki/X86-64 12 hex digits (with leading 0x) mean 48 bits. That is 256 TB of virtual address space. Read wiki on AMD64 (I assume that you are on it, right?) ar
這將取決于你想要的。 對(duì)象有兩種屬性:類屬性和實(shí)例屬性。 類屬性 類屬性對(duì)于類的每個(gè)實(shí)例都是相同的對(duì)象。 class MyClass: class_attribute = [] 這里已經(jīng)為類定義了MyClass.class_attribute ,您可以使用它。 如果您創(chuàng)建MyClass實(shí)例,則每個(gè)實(shí)例都可以訪問(wèn)相同的class_attribute 。 實(shí)例屬性 instance屬性僅在創(chuàng)建實(shí)例時(shí)可用,并且對(duì)于類的每個(gè)實(shí)例都是唯一的。 您只能在實(shí)例上使用它們。 在方法__init__中定
總結(jié)
以上是生活随笔為你收集整理的pandas 插入空列_Pandas在DF创建期间添加额外的空列(Pandas add additional empty columns during DF creation)...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 前端JS获取图片文件的真实格式
- 下一篇: linux磁盘空间df-h出不出来,li