考虑数组
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();
}
}
不太清楚这一点。
答案 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