将熊猫值替换为另一个数组的索引

时间:2019-04-19 18:49:14

标签: pandas

考虑数组

a = np.array([5, 12, 56, 36])

和熊猫数据框

b = pandas.DataFrame(np.array([1, 3, 0, 3, 1, 0, 2]) 

如何使用b的值作为a的索引来替换c = pandas.DataFrame([12, 36, 5, 36, 12, 5, 56]) 上的值,即预期值是:

import java.util.Arrays;
import java.util.stream.Collectors;

public class ReverseWords { 
    public static void main(String[] args) {
        String a = "It Costs 25000rs for 1 LCD Projector";
        String output = Arrays.stream(a.split(" "))
            .map(s -> s.matches(".*\\d.*") ? reverseWithNumbers(s) : reverse(s))
            .collect(Collectors.joining(" "));
        System.out.println(output);
    }

    public static String reverseWithNumbers(String input) {
        return Arrays.stream(input.split("(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)"))
            .map(s -> s.matches(".*\\d.*") ? s : reverse(s))
            .collect(Collectors.joining(""));
    }

    public static String reverse(String input) {
        return new StringBuilder().append(input).reverse().toString();
    }
}

不太清楚这一点。

3 个答案:

答案 0 :(得分:2)

一种方法是使用套用

column0  column1  column2  column3  column4
3        3        1        2        0

或者通过索引numpy数组并将值传递给DataFrame,

c = b.apply(lambda x: a[x])

答案 1 :(得分:1)

让我们尝试一些不同的Series.get

pd.Series(a).get(b[0])
Out[57]: 
1    12
3    36
0     5
3    36
1    12
0     5
2    56
dtype: int32

答案 2 :(得分:0)

地图可以使用。

b.a.map({i:j for i,j in enumerate(a)})
0    12
1    36
2     5
3    36
4    12
5     5
6    56
Name: a, dtype: int64