如果我有这样的熊猫数据框:
NaN 2 3 1 7 NaN 4
5 NaN NaN 2 8 0 3
NaN NaN NaN 4 7 9 3
和类似这样的数组:
[3, -5, 4]
如何反转数组值为负的行中的熊猫数据框列?这样我就得到了这样的东西:
NaN 2 3 1 7 NaN 4
3 0 8 2 NaN NaN 5
NaN NaN NaN 4 7 9 3
答案 0 :(得分:0)
假设您要反转第二行。根据您的情况进行操作。
df.iloc[1] = df.iloc[1].tolist()[::-1]
答案 1 :(得分:0)
我相信您需要numpy.where
并带有广播的布尔掩码,以通过索引建立带有负值的列表的负数:
L = [3, -5, 4]
mask = np.array(L)[:, None] < 0
df = pd.DataFrame(np.where(mask, df.values[:, ::-1], df.values),
index=df.index,
columns=df.columns)
print (df)
0 1 2 3 4 5 6
0 NaN 2.0 3.0 1.0 7.0 NaN 4.0
1 3.0 0.0 8.0 2.0 NaN NaN 5.0
2 NaN NaN NaN 4.0 7.0 9.0 3.0
答案 2 :(得分:0)
这是一个虚拟数据框:
df = pd.DataFrame(data=np.random.randint(-1, 10,size = (10, 7)), columns = ['a', 'b', 'c', 'd', 'e', 'f', 'g'])
df
a b c d e f g
0 5 2 3 -1 5 7 0
1 1 9 1 6 1 3 6
2 1 1 7 4 -1 2 3
3 1 7 5 5 6 3 3
4 3 7 8 8 1 0 9
5 9 9 1 6 9 0 4
6 0 5 1 5 7 1 -1
7 4 4 8 7 7 3 1
8 5 -1 9 9 1 1 5
9 9 3 2 3 -1 3 0
如果要在索引8处反转:
df.loc[8] = df.loc[8][::-1].values
df
a b c d e f g
0 5 2 3 -1 5 7 0
1 1 9 1 6 1 3 6
2 1 1 7 4 -1 2 3
3 1 7 5 5 6 3 3
4 3 7 8 8 1 0 9
5 9 9 1 6 9 0 4
6 0 5 1 5 7 1 -1
7 4 4 8 7 7 3 1
8 5 1 1 9 9 -1 5
9 9 3 2 3 -1 3 0