我有一个二维数据框和一个坐标列表,我想用它们来设置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
的事情?
答案 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