pandas 插入空列_Pandas在DF创建期间添加额外的空列(Pandas add additional empty columns during DF creation)...
Pandas在DF創建期間添加額外的空列(Pandas add additional empty columns during DF creation)
我越來越:
AssertionError: 14 columns passed, passed data had 12
columns.
錯誤是不言自明的,我正在從列表列表中創建一個DataFrame,每個列表實際上包含12個字段。 如何強制pandas.DataFrame在一次操作中添加帶NaN的額外列。 這就是我創建df的方式。
pandas.DataFrame(results, columns=FIELDS)
有沒有辦法在DataFrame創建中簡化這一點,而不必這樣做:
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
滿意答案
好吧,你不需要像上面那樣用逐行的單獨列分配硬編碼。 這做了類似的事情,但使用循環代替填充列:
>>> 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
相關問答
我想使用DataFrame ctor進行連接: 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: []
因此,通過傳遞一個包...
這是一種方法。 根據您的數據,這可能會混合類型(例如,如果一列是時間戳)。 此外,這會重置您的指數。 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 ...
你的方法可能很慢,因為它沒有矢量化。 這是另一種方法: 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...
注釋中發布的AttributeError非常重要 - 您有一個Series,相當于一個列,而不是DataFrame。 main_df.to_frame()
將返回一個數據幀,然后您可以重命名列并添加新列。 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 (這里的文檔)的方法 ,它具有非常干凈的語法: 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
無論如何它默認為零,但我補充說完整性。 我想在@ 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 ...
你可以試試這個: # 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
以空間為代價,一種快速的方法是生成兩個映射,然后...
好吧,你不需要像上面那樣用逐行的單獨列分配硬編碼。 這做了類似的事情,但使用循環代替填充列: >>> 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...
相關文章
在菜單中 增加了 click點擊事件,事件代碼如下: '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(
...
用過struts的標簽,也接觸過spring的標簽,不過我個人覺得el表達式是最好用的。el表達式判斷
...
新增一個節點6383,并啟動 執行redis-trib.rb add-node命令添加節點 redi
...
DecimalFormat是NumberFormat的一個具體子類,用于格式化十進制數字。 在日常開發
...
啥也不說鳥,上代碼,只要頁面引用了相應的ext的js庫,就能運行: Ext.onReady(func
...
最新問答
如果啟用了復制處理程序,請確保將其置于其中一個安全角色之后。 我見過人們做的另一件事是在不同的端口上運行admin。 最好在需要auth的頁面上使用SSL,這樣你就不會發送明確的密碼,因此管理和復制將發生在8443上,而常規查詢將在8080上發生。 如果您要簽署自己的證書,請查看此有用的SO頁面: 如何在特定連接上使用不同的證書? I didn't know that /admin was the context for SOLR admin because /admin does not re
第一:在您的樣本中,您有: 但是你在詢問 //td[@class=‘CarMiniProfile-TableHeader’] (注意TableHeader中的大寫'T')。 xpath區分大小寫。 第二:通過查詢// td [@ class ='CarMiniProfile-TableHeader'] / td,你暗示你在外部td中有一個'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;
問題是,在啟用Outlook庫引用的情況下, olMailItem是一個保留常量,我認為當您將Dim olMailItem as Outlook.MailItem ,這不是問題,但是嘗試設置變量會導致問題。 以下是完整的解釋: 您已將olMailItem聲明為對象變量。 在賦值語句的右側,在將其值設置為對象的實例之前,您將引用此Object 。 這基本上是一個遞歸錯誤,因為你有對象試圖自己分配自己。 還有另一個潛在的錯誤,如果之前已經分配了olMailItem ,這個語句會引發另一個錯誤(可能是
我建議使用wireshark http://www.wireshark.org/通過記錄(“捕獲”)設備可以看到的網絡流量副本來“監聽”網絡上發生的對話。 當您開始捕獲時,數據量似乎過大,但如果您能夠發現任何看起來像您的SOAP消息的片段(應該很容易發現),那么您可以通過右鍵單擊并選擇來快速過濾到該對話'關注TCP Stream'。 然后,您可以在彈出窗口中查看您編寫的SOAP服務與Silverlight客戶端之間的整個對話。 如果一切正常,請關閉彈出窗口。 作為一個額外的好處,wireshar
Android默認情況下不提供TextView的合理結果。 您可以使用以下庫并實現適當的aligntment。 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。 以下是我編譯和運行的方式: C:\temp>javac -cp . apples.java C:\temp>dir apples Volume in drive C is HP_PAV
12個十六進制數字(帶前導0x)表示48位。 那是256 TB的虛擬地址空間。 在AMD64上閱讀wiki(我假設你在上面,對嗎?)架構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
這將取決于你想要的。 對象有兩種屬性:類屬性和實例屬性。 類屬性 類屬性對于類的每個實例都是相同的對象。 class MyClass: class_attribute = [] 這里已經為類定義了MyClass.class_attribute ,您可以使用它。 如果您創建MyClass實例,則每個實例都可以訪問相同的class_attribute 。 實例屬性 instance屬性僅在創建實例時可用,并且對于類的每個實例都是唯一的。 您只能在實例上使用它們。 在方法__init__中定
總結
以上是生活随笔為你收集整理的pandas 插入空列_Pandas在DF创建期间添加额外的空列(Pandas add additional empty columns during DF creation)...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前端JS获取图片文件的真实格式
- 下一篇: linux磁盘空间df-h出不出来,li