相关疑难解决方法(0)

在Python pandas中向现有DataFrame添加新列

我有以下索引的DataFrame与命名列和行不连续数字:

          a         b         c         d
2  0.671399  0.101208 -0.181532  0.241273
3  0.446172 -0.243316  0.051767  1.577318
5  0.614758  0.075793 -0.451460 -0.012493
Run Code Online (Sandbox Code Playgroud)

我想'e'在现有数据框中添加一个新列,并且不希望更改数据框中的任何内容(即,新列始终与DataFrame具有相同的长度).

0   -0.335485
1   -1.166658
2   -0.385571
dtype: float64
Run Code Online (Sandbox Code Playgroud)

我尝试了不同的版本join,append,merge,但我没有得到我想要的结果,只在最错误.如何e在上面的示例中添加列?

python dataframe pandas chained-assignment

887
推荐指数
23
解决办法
182万
查看次数

如何将函数应用于两列Pandas数据帧

假设我有一个df'ID', 'col_1', 'col_2'.我定义了一个函数:

f = lambda x, y : my_function_expression.

现在我想应用fto df的两列'col_1', 'col_2'来逐元素地计算一个新列'col_3',有点像:

df['col_3'] = df[['col_1','col_2']].apply(f)  
# Pandas gives : TypeError: ('<lambda>() takes exactly 2 arguments (1 given)'
Run Code Online (Sandbox Code Playgroud)

怎么做 ?

** 添加详细示例如下 ***

import pandas as pd

df = pd.DataFrame({'ID':['1','2','3'], 'col_1': [0,2,3], 'col_2':[1,4,5]})
mylist = ['a','b','c','d','e','f']

def get_sublist(sta,end):
    return mylist[sta:end+1]

#df['col_3'] = df[['col_1','col_2']].apply(get_sublist,axis=1)
# expect above to output df as below 

  ID  col_1  col_2            col_3
0  1      0 …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

289
推荐指数
13
解决办法
37万
查看次数

Pandas有条件地创建一个系列/数据帧列

我有一个沿着下面的数据框:

    Type       Set
1    A          Z
2    B          Z           
3    B          X
4    C          Y
Run Code Online (Sandbox Code Playgroud)

我想在数据帧中添加另一列(或生成一系列)与数据帧相同的长度(=相等的记录/行数),如果Set ='Z'则设置颜色为绿色,如果Set =否则设置为'red' .

最好的方法是什么?

python numpy dataframe pandas

260
推荐指数
7
解决办法
33万
查看次数

熊猫:如何对单个列使用apply()函数?

我有一个有两列的pandas数据框.我需要更改第一列的值而不影响第二列,只需更改第一列值即可返回整个数据框.我怎么能用熊猫申请呢?

python dataframe pandas python-3.5

207
推荐指数
7
解决办法
24万
查看次数

Python参数绑定器

如何将参数绑定到Python方法以存储一个用于以后调用的nullary仿函数?与C++类似boost::bind.

例如:

def add(x, y):
    return x + y

add_5 = magic_function(add, 5)
assert add_5(3) == 8
Run Code Online (Sandbox Code Playgroud)

python partial-application

60
推荐指数
5
解决办法
2万
查看次数

并行Python:什么是回调?

并行Python中,它在提交函数中有一些叫做回调(文档)的东西,但它似乎没有解释得太好.我几天前在他们的论坛上发帖,我没有收到回复.有人会解释回调是什么以及它用于什么?

谢谢.

python callback parallel-python

45
推荐指数
2
解决办法
6万
查看次数

Pandas的性能适用于np.vectorize以从现有列创建新列

我正在使用Pandas数据帧,并希望创建一个新列作为现有列的函数.我还没有看到之间的速度差的一个很好的讨论df.apply()np.vectorize(),所以我想我会问这里.

熊猫apply()功能很慢.根据我的测量结果(如下面的一些实验所示),使用np.vectorize()比使用DataFrame功能快25倍(或更多)apply(),至少在我的2016 MacBook Pro上使用.这是预期的结果,为什么?

例如,假设我有以下带N行的数据框:

N = 10
A_list = np.random.randint(1, 100, N)
B_list = np.random.randint(1, 100, N)
df = pd.DataFrame({'A': A_list, 'B': B_list})
df.head()
#     A   B
# 0  78  50
# 1  23  91
# 2  55  62
# 3  82  64
# 4  99  80
Run Code Online (Sandbox Code Playgroud)

进一步假设我想创建一个新列作为两列的函数AB.在下面的例子中,我将使用一个简单的函数divide().要应用该功能,我可以使用df.apply()np.vectorize():

def divide(a, b):
    if b == 0:
        return …
Run Code Online (Sandbox Code Playgroud)

python arrays performance numpy pandas

44
推荐指数
2
解决办法
1万
查看次数

根据pandas中的其他列值有条件地填充列值

我有DataFrame一些列.一列包含正在使用其货币的符号,例如欧元或美元符号.另一列包含预算值.因此,例如在一行中它可能意味着5000欧元的预算,而在下一行它可以说2000美元的预算.

在pandas中,我想在我的DataFrame中添加一个额外的列,以欧元标准化预算.所以基本上,对于每一行,如果货币列中的符号是欧元符号,则新列中的值应该是预算列*1中的值,新列中的值应该是预算列的值*如果货币栏中的符号是美元符号,则为0.78125.

我知道如何添加一列,其值填充它,从另一列等的值复制但不知道如何有条件地基于其他列的值填充新列.

有什么建议?

dataframe pandas

31
推荐指数
4
解决办法
4万
查看次数

如何将lambda函数正确应用到pandas数据框列中

我有一个pandas数据框,sample其中一个被调用的列PR应用了lambda函数,如下所示:

sample['PR'] = sample['PR'].apply(lambda x: NaN if x < 90)
Run Code Online (Sandbox Code Playgroud)

然后,我得到以下语法错误消息:

sample['PR'] = sample['PR'].apply(lambda x: NaN if x < 90)
                                                         ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

lambda pandas

21
推荐指数
2
解决办法
9万
查看次数

如果条件与数据框

我想要如果条件成立,df[df["tg"] > 10然后df[df["tg"] < 32乘以五,否则除以二。但是,我收到以下错误

ValueError:DataFrame 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。

d = {'year': [2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001],
     'day': [1, 2, 3, 4, 1, 2, 3, 4,],
     'month': [1, 1, 1, 1, 2, 2, 2, 2],
     'tg': [10, 11, 12, 13, 50, 21, -1, 23],
     'rain': [1, 2, 3, 2, 4, 1, 2, 1]}
df = pd.DataFrame(data=d)
print(df)


[OUT]

   year  day  month  tg  rain
0  2001    1      1  10     1
1  2001    2 …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

10
推荐指数
1
解决办法
783
查看次数