我有简单的数据帧:
import pandas as pd
frame = pd.DataFrame(np.random.randn(4, 3), columns=list('abc'))
Run Code Online (Sandbox Code Playgroud)
例如:
a b c
0 -0.813530 -1.291862 1.330320
1 -1.066475 0.624504 1.690770
2 1.330330 -0.675750 -1.123389
3 0.400109 -1.224936 -1.704173
Run Code Online (Sandbox Code Playgroud)
如果c为正,我想创建包含"c"值的列"d".其他值来自"b".
我在尝试:
frame['d']=frame.apply(lambda x: frame['c'] if frame['c']>0 else frame['b'],axis=0)
Run Code Online (Sandbox Code Playgroud)
但得到"ValueError :('系列的真值是不明确的.使用a.empty,a.bool(),a.item(),a.any()或a.all().','发生于索引a')
我试图谷歌如何解决这个问题,但没有成功.有什么提示吗?
我在Pandas Dataframe列"B"中有值可以是正数还是负数:
data=[[5889.25, 738.0],
[5896.5, 49.0],
[5897.5, 130.0],
[5899.5, -266.0],
[5903.75, -126.0],
[5903.75, -512.0],
[5898.75, -141.0],
[5897.5, -303.0],
[5895.0, -107.0],
[5893.25, 27.0]]
pd.DataFrame(data,columns=['A','B'])
A B
0 5889.25 738.0
1 5896.50 49.0
2 5897.50 130.0
3 5899.50 -266.0
4 5903.75 -126.0
5 5903.75 -512.0
6 5898.75 -141.0
7 5897.50 -303.0
8 5895.00 -107.0
9 5893.25 27.0
Run Code Online (Sandbox Code Playgroud)
什么是快速pythonic方法使列"C"计算"B"中的数字是多少行?所以数据框看起来像:
A B C
0 5889.25 738.0 0
1 5896.50 49.0 0
2 5897.50 130.0 0
3 5899.50 -266.0 1
4 5903.75 -126.0 2
5 …Run Code Online (Sandbox Code Playgroud)