Victor0321 发表于 2022-6-30 00:59:40

关于pandas的一点用法

哈咯 各位大神,关于DF的操作突然有点忘记就是我想对一个二维数组比如说x:10 *10 ,还有一个挑选的一维数据,这个数据为一列行数跟二维数组相同,比如说y :10 * 1

我想对这个一维数组进行bull索引 举个简单的例子比如说 y %3 == 0: 这个返回一个bull的 seires我知道。

然后我想对这个返回的bull布尔series里条件为ture的行,在这个例子里就是0 , 3,6,9行的x中 的数据都*2 即x的0369行中每一个原有的值乘2,其他行都保持原值不变,我应该怎么操作?

阿奇_o 发表于 2022-6-30 03:07:06

提示:用 df.apply(..., axis=1)

Victor0321 发表于 2022-6-30 12:10:04

阿奇_o 发表于 2022-6-30 03:07
提示:用 df.apply(..., axis=1)

能举个例子么    。。我这边不知道怎么利用两个条件

Twilight6 发表于 2022-7-1 08:41:42


这样可否,参考代码:

import pandas as pd

df = pd.DataFrame(np.arange(100).reshape((10, 10)))
index =
df.iloc = df.iloc * 2

print(df)

Victor0321 发表于 2022-7-1 13:21:08

Twilight6 发表于 2022-7-1 08:41
这样可否,参考代码:

df.iloc = df.iloc * 2
df.iloc = 相当于对index行重新赋值了嘛!!! 可以的 可以的
但如果我这边其实是有个这样的需求就是对于一个100*100的数据,然后又一个100行的label然后这个label里有正有负,我需要把对应正例的行,在100*100的矩阵中每行对应的数*2 ,所以就是我先布尔索引df == 1,然后找出为true的index 然后在这样df.iloc = df.iloc * 2 套进去就可以了 对嘛!!

Twilight6 发表于 2022-7-1 17:34:50

Victor0321 发表于 2022-7-1 13:21
df.iloc = df.iloc * 2
df.iloc = 相当于对index行重新赋值了嘛!!! 可以的 可以的
但如果我这边其 ...



测试看看

Victor0321 发表于 2022-7-1 19:54:00

Twilight6 发表于 2022-7-1 17:34
测试看看

不太行。。。

我这样写,报错了,,我想把b里对应者就是a中的行,b中哪个元素是sb ,那a中那一行对应的值全部*2

import pandas as pd
import numpy as np

a = pd.DataFrame(np.arange(100).reshape(10,10))
print(a)

b =["sb","sb","sb","sb","sb","1",'2',"sb","sb","sb",]
c = pd.DataFrame(b)
index__ = []
for i in c.index:
    if c.iloc == "sb":
      index__.append(i)
print(index__)


Traceback (most recent call last):
File "/home/victor/catkin_ws/src/test1/src/my.py", line 11, in <module>
    if c.iloc == "sb":
File "/home/victor/anaconda3/lib/python3.9/site-packages/pandas/core/generic.py", line 1527, in __nonzero__
    raise ValueError(
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

Twilight6 发表于 2022-7-1 20:40:23

Victor0321 发表于 2022-7-1 19:54
不太行。。。

我这样写,报错了,,我想把b里对应者就是a中的行,b中哪个元素是sb ,那a中那一行对应 ...

import pandas as pd
import numpy as np

df = pd.DataFrame(np.arange(100).reshape((10, 10)))

b =["sb","sb","sb","sb","sb","1",'2',"sb","sb","sb"]
index = == "sb" for i in range(len(b))]
df.iloc = df.iloc * 2

print(df)

Victor0321 发表于 2022-7-1 21:47:48

Twilight6 发表于 2022-7-1 20:40


太强了!!!
页: [1]
查看完整版本: 关于pandas的一点用法