考虑下表:
Obj Bits Eq Result
A 5 5*Bits+20 45
B 10 7*Bits+8 78
C 11 12*Bits+100 232
我想要创建一个列结果,它计算列Eq中的表达式。这些方程不是固定的,每一行都会有变化。但是,方程中使用的变量将是dataframe中的一个或多个列名。我该怎么做才能做到这一点?我知道Pandas有eval方法,但在我的例子中,每行方程可能不同。谢谢你的建议。
我在python中有一个pandas Dataframe,它有一个名为"Description“的列,其中包含一组由"\n”分隔的文本元素。我想通过拆分文本元素在相同的Dataframe中创建新列。例如,我有: Description
'\nA: Elephant\nB: Cats\nC:Dog' 我想用关联的元素获得相应的列数,如下所示: Description A B C
'\nA: Elephant\nB: Cats\nC:Dog' Elephant
我正在尝试开发一个文档分类器。我是python的新手,我正在尝试找出创建存储结构的最佳/标准方法。我正在寻找引入机器学习算法的数据集。
我正在摄取txt文件,我想让一列保存整个文档内容,第二列保存类(在我的例子中是0-1)。我最初尝试创建一个列表列表--比如list ["the skye is blue",1]["the sky is grey",1]["the sky is red",0]。
我还试图创建一个pandas Dataframe,因为我认为它的结构可能更适合数据操作。
假设我有一个名为df1的Python/Pandas数据帧,其中包含列a和b,每个列只有一条记录(a =1和b= 2)。我想创建第三列c,它的值等于a+b或3。
使用Pandas,我会写道:
df1['c'] = df1['a'] + df1['b']
我更喜欢写一些更简单、更容易阅读的东西,比如下面这样:
with df1:
c = a + b
SAS允许在其“数据步骤”中使用这种更简单的语法。如果Python/Pandas有类似的东西,我会很高兴的。
非常感谢!肖恩
是否可以像处理Excel电子表格一样使用pandas DataFrame :例如,通过在列中输入一个公式,以便当其他列中的变量发生更改时,此列中的值也会自动更改?类似于:
a b c
2 3 =a+b
因此,当我更新2或3时,列c也会自动更新。
PS:显然可以编写一个函数来返回a+b,但是pandas或其他Python库中有没有内置的功能来以这种方式处理矩阵呢?
我想在python中创建一个矩阵,它使用的是每个状态转换组合的所有频率。例如,如果我们有3个状态(a,b,c)和两个时间段(1 & 2),那么我可以使用以下列进行数据处理:
# Import pandas library
import pandas as pd
# initialize list of lists
data = [['a to a', 20],['a to b', 10], ['a to c', 5],
['b to a', 7],['b to b', 30],['
我的密码是:
from pandas import DataFrame
def func(df: DataFrame) -> DataFrame
...
由于我实际上没有在代码中创建DataFrame对象,所以我想这样做:
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from pandas import DataFrame
def func(df: DataFrame) -> DataFrame
...
这会引发错误:
E NameError: name 'DataFrame' i
当从两个现有列创建新列时,为什么pandas要抛出一个SettingsWithCopyWarning
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
跑步时
df['c'] = df['a'] - df['b']
但跑的时候不行
df.c = df['a'] - df['b']
此外,c列是使用df['c'
我的问题只是关于性能,而不是语义。
向df添加新列是否会导致将现有DataFrame中的数据物理复制到新的内存位置(例如,以确保DataFrame占用连续内存)?
# using pandas 0.18.1, python 3.5
import pandas as pd
df = pd.DataFrame({'a': range(100)})
b = pd.Series(range(100))
df['b'] = b # is this operation expensive?
# equivalently df.loc[:, 'b'] = b
要将多个变量传递给一个普通的python函数,您只需编写如下代码:
def a_function(date,string,float):
do something....
convert string to int,
date = date + (float * int) days
return date
在使用Pandas DataFrames时,我知道您可以基于一个列的内容创建一个新列,如下所示:
df['new_col']) = df['column_A'].map(a_function)
# This m
我想在python项目中将数据与代码分开。这些数据包括熊猫DataFrames和连接DataFrame列的方程式。
目前,我在脚本中对方程进行了硬编码,因此无法动态更改它们(在运行时加载新的DataFrames和相应的等式)。对如何生成等效函数有任何建议吗?
例如:
#Given a pandas data frame:
import pandas as pd
df = pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]], columns= ["a", "b", "c"])
# and a simple arbitra
我有两个DFs,x和y.dfx包含一个group变量和两个值变量val_1和val_2。X中的每个组都希望根据DF中的条件选择val_1或val_2,结果应该是一个新的DF,其中包含一个group列和一个包含来自val_1或val_2的值的值列。
我有一个解决方案,但是我是Python新手,我想知道下面的代码是否可以更简洁。
import pandas as pd
import numpy as np
# define groups and number of observations
groups = ['a','b','c']
N_grou
我在Pandas DataFrame的一个列(COL_NAME)中获得了一些数据。我想提取“(”和“)”之间的一些文本(这些数据要么存在,要么根本不存在,尽管数据中可能有多组括号)。然后,我想将paren中的数据写入另一列,然后从原始字符串中删除'(XXX)‘。
也就是说。
COL_NAME
========
(info) text (yay!)
I love text
Text is fun
(more info) more text
lotsa text (boo!)
转换为:
COL_NAME NEW_COL
======== =======
默认情况下,当两个dataframes被连接(使用concat)时,concat将创建一个新的dataframe,并将两者的列合并在一起,在结果中设置nan中任何缺失列的值。例如..。
import pandas as pd
a = pd.DataFrame({'A':range(5), 'B':range(5)})
b = pd.DataFrame({'A':range(5)})
pd.concat([a , b], sort=False)
A B
0 0 0.0
1 1 1.0
...
3 3 NaN
4
我有一只熊猫,它的每一栏都是按比例排列的,值是男性还是女性。我的目标是创建2列与OneHotEncoder (按比例男性,按女性)的值1或0适当。
我正在使用Azure ML设计器,它使用Execute Python脚本组件,该组件以dataframe作为参数,然后它可以输出2个dataframes。
我输入的代码是:
# The script MUST contain a function named azureml_main
# which is the entry point for this module.
# imports up here can be used to
impor
我正在根据收到的电子邮件用Python进行文本分析。我的数据在Pandas中,电子邮件文本在df['document']中,主题在df['topic']专栏中。
我想要创建一个包含定义每个主题(可能使用tf_idf)的顶部关键字的dataframe。
我创建了一个矢量器,并试图创建一个新的数据格式,主题作为索引或行,以及列中的单词列表。
from sklearn.feature_extraction.text import TfidfVectorizer
v = TfidfVectorizer()
x = v.fit_transform(df['docu
我在Pandas中有DataFrame,如下所示:
col1
-------
John One
John Kole Ole
Mike Robe Gut
Michael Spark
如何才能从上面的DataFrame中的列中只显示这些值,该列有两个以上的值,所以或示例只显示John和Mike,因为这些值有两个以上的单词?
如何在Python Pandas中做到这一点?
我正在使用Python的pandas库处理Excel文件中的一些数据,并根据这些数据创建两个新列。我想将这些列添加到Excel文件中现有列的最右侧,而不会扰乱已经存在的数据。由于这个原因,我不能使用pd.to_excel(),因为这会覆盖现有的数据,并且整个工作表都会丢失其格式。
我正在查看OpenPyXL以保存新数据(必须读取文件两次并不是很好,但是使用OpenPyXL处理头并将它们传递给pandas在我看来有点混乱)。问题是ws.append()函数在第一列(A列)的底部插入数据,我想在第一个可用空闲列(例如C和D列)的顶部(第1行)插入数据。理想情况下,这应该从两个pandas Seri