df = pd.DataFrame({'Col1': ['Bob', 'Joe', 'Bill', 'Mary', 'Joe'],
'Col2': ['Joe', 'Steve', 'Bob', 'Bob', 'Steve'],
'Col3': np.random.random(5)})
Run Code Online (Sandbox Code Playgroud)
返回'Col1'和'Col2'的唯一值的最佳方法是什么?
期望的输出是
'Bob', 'Joe', 'Bill', 'Mary', 'Steve'
Run Code Online (Sandbox Code Playgroud) data = {'name' : ['bill', 'joe', 'steve'],
'test1' : [85, 75, 85],
'test2' : [35, 45, 83],
'test3' : [51, 61, 45]}
frame = pd.DataFrame(data)
Run Code Online (Sandbox Code Playgroud)
我想添加一个新列,显示每行的最大值.
期望的输出:
name test1 test2 test3 HighScore
bill 75 75 85 85
joe 35 45 83 83
steve 51 61 45 61
Run Code Online (Sandbox Code Playgroud)
有时
frame['HighScore'] = max(data['test1'], data['test2'], data['test3'])
Run Code Online (Sandbox Code Playgroud)
有效,但大多数时候会出现此错误:
ValueError:具有多个元素的数组的真值是不明确的.使用a.any()或a.all()
为什么它有时只能起作用?还有另一种方法吗?
如果我有这样的框架
frame = pd.DataFrame({'a' : ['the cat is blue', 'the sky is green', 'the dog is black']})
Run Code Online (Sandbox Code Playgroud)
我想检查这些行中是否包含某个单词我必须这样做.
frame['b'] = frame.a.str.contains("dog") | frame.a.str.contains("cat") | frame.a.str.contains("fish")
Run Code Online (Sandbox Code Playgroud)
frame['b']
输出:
True
False
True
Run Code Online (Sandbox Code Playgroud)
如果我决定列一个清单
mylist =['dog', 'cat', 'fish']
Run Code Online (Sandbox Code Playgroud)
我如何检查列中是否包含某个单词?
我有这样的清单
myList = [0.0 , 0.0, 0.0, 2.0, 2.0]
Run Code Online (Sandbox Code Playgroud)
我想找到列表中第一个数字的位置,该位置不等于零.
myList.index(2.0)
Run Code Online (Sandbox Code Playgroud)
适用于此示例,但有时第一个非零数字将为1或3.
有这么快的方法吗?
如何将包含datetime64对象的列转换为今天11月1日的01-11-2013字符串.
我试过了
df['DateStr'] = df['DateObj'].strftime('%d%m%Y')
Run Code Online (Sandbox Code Playgroud)
但是我得到了这个错误
AttributeError:'Series'对象没有属性'strftime'
这是我的数据框
df = pd.DataFrame({'Col1':['Joe','Bob','Joe','Joe'],
'Col2':[55,25,88,80]})
Run Code Online (Sandbox Code Playgroud)
我只想要它在“Col1”中出现多次的名称
我可以这样做
grouped = df.groupby("Col1")
grouped.filter(lambda x: x["Col1"].count()>2)['Col1'].unique()
Run Code Online (Sandbox Code Playgroud)
然而,这是看起来丑陋的代码
有没有更简单干净的方法?
是否可以根据不同列中的尾随行在pandas数据帧中进行计算?像这样的东西.
frame = pd.DataFrame({'a' : [True, False, True, False],
'b' : [25, 22, 55, 35]})
Run Code Online (Sandbox Code Playgroud)
我希望输出为:
A B C
True 25
False 22 44
True 55 55
False 35 70
Run Code Online (Sandbox Code Playgroud)
当列A中的尾随行为 False时,列C 与列B相同,而当列A中的尾随行为真时,列C为列B*2 ?
从此列表中返回第一个非纳米值的最佳方法是什么?
testList = [nan, nan, 5.5, 5.0, 5.0, 5.5, 6.0, 6.5]
Run Code Online (Sandbox Code Playgroud)
编辑:
nan是一个浮子
使用pandas groupby获得最后n个实例的平均值的最佳方法是什么?
例如我有一个这样的数据框:
frame = pd.DataFrame({'Student' : ['Bob', 'Bill', 'Bob', 'Bob', 'Bill', 'Joe', 'Joe', 'Bill', 'Bob', 'Joe'],
'Score' : np.random.random(10)})
Run Code Online (Sandbox Code Playgroud)
我如何获得每个学生的最后 3 个分数的平均值。
myList = [True, True, False, False, True, False, True, False, False]
Run Code Online (Sandbox Code Playgroud)
我想找到True是否连续出现3次.
我可以通过这样做找到它:
for x0, x1, x2 in zip(myList, myList[1:], myList[2:]):
if x0 == True and x1 == True and x2 == True:
print True
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?
python ×10
pandas ×7
python-2.7 ×4
list ×3
dataframe ×1
datetime ×1
group-by ×1
max ×1
python-3.x ×1
unique ×1