pandas 插入空列

编程入门 行业动态 更新时间:2024-10-28 02:31:38

<a href=https://www.elefans.com/category/jswz/34/1769643.html style=pandas 插入空列"/>

pandas 插入空列

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

原文:

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'元素,而它们是兄弟姐妹。 有很多方法可以在这里获得制作和模型

这是你的答案: / .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 (“捕获”)设备可以看到的网络流量副本来“监听”网络上发生的对话。 当您开始捕获时,数据量似乎过大,但如果您能够发现任何看起来像您的SOAP消息的片段(应该很容易发现),那么您可以通过右键单击并选择来快速过滤到该对话'关注TCP Stream'。 然后,您可以在弹出窗口中查看您编写的SOAP服务与Silverlight客户端之间的整个对话。 如果一切正常,请关闭弹出窗口。 作为一个额外的好处,wireshar

Android默认情况下不提供TextView的合理结果。 您可以使用以下库并实现适当的aligntment。 Android Does not provide Justified aligntment of TextView By default. You can use following library and achieve proper aligntment. /

你的代码适合我: 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(我假设你在上面,对吗?)架构 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 插入空列

本文发布于:2023-07-04 06:37:29,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1019725.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:pandas

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!