如何根据坐标列表有效地设置熊猫数据框中的值?

时间:2019-01-18 14:33:08

标签: python pandas

我有一个二维数据框和一个坐标列表,我想用它们来设置df中的值。

我已经完成了一个基本的for循环,但对我来说似乎毫无用处。

MWE:

import pandas as pd
df = pd.DataFrame(pd.np.ones((3, 4)))
coordinates = [(2, 1), (2, 3)]
for point in coordinates:
    df.iloc[point[0], point[1]] = pd.np.inf

print(df)
     0         1    2         3
0  1.0  1.000000  1.0  1.000000
1  1.0  1.000000  1.0  1.000000
2  1.0       inf  1.0       inf

有没有办法做类似df.iloc[coordinates] = pd.np.inf的事情?

1 个答案:

答案 0 :(得分:3)

大量借用this答案,您可以直接在基础numpy数组上进行操作。我不知道有任何内置的熊猫函数可以满足您的要求。

import pandas as pd

df = pd.DataFrame(pd.np.ones((3, 4)))
coordinates = [(2, 1), (2, 3)]
rows, cols = zip(*coordinates)
df.values[rows, cols] = pd.np.inf

结果:

     0         1    2         3
0  1.0  1.000000  1.0  1.000000
1  1.0  1.000000  1.0  1.000000
2  1.0       inf  1.0       inf