我正在使用熊猫数据框,其中一列中包含非标准值。 有没有一种方法可以提取或替换列中的字符和数字。 我对将正则表达式模式应用于数据清理非常陌生。
一个col是Precise_Age,另一个col是Browser。
在浏览器中,我只想要名称和版本。(如果版本是10.1.2,那么我只想要10)-Android 10,Android 4,iOS 11等。
Browser desired_output
75.0.3770.143 | Chrome Dev | Android | 9 Android 9
78.0.3904.108 | Chrome Dev | Android | 9 Android 9
79.0.3945.93 | Chrome Dev | Android | 9 Android 9
79.0.3945.93 | Chrome Dev | Android | 8.0.0 Android 8
| | Android | 8.1.0 Android 8
79.0.3945.116 | Chrome Dev | Android | 10 Android 10
79.0.3945.93 | Chrome Dev | Android | 5.1 Android 5
| | Android | 10 Android 10
| Facebook | Android | 8.1.0 Android 8
79.0.3945.116 | Chrome Dev | Android | 4.4.4 Android 4
| | Android | 8.1.0 Android 8
79.0.3945.79 | Chrome Dev | Windows | 8 Windows 8
77.0.3865.116 | Chrome Dev | Android | 9 Android 9
88.1.284108841| Google Search | iOS | 13.3 iOS 13
在Age col中,我只需要标准值,替换空白,逗号等。 如果age具有超过100个值,则将其全部丢失。
Age desired_output
67 67
66 66
67.5 67
60대후반 60
1949ë…„ null
63세 63
83ë…„ìƒ 83
11세 11
7217861839 null
59 years 59
60세 60
73.87083774 73
54ë…„ìƒ 54
55세 55
327 null
37ë…„ìƒ 37
642 null
523 null
0.61 0
53세 53
42ë…„ìƒ 42
757575 null
91.98192554 91
1.11991 1
83세(만82세) 83
4324234 null
8827 null
11 Years 11
答案 0 :(得分:0)
在使用import React, { memo } from "react";
import { StyleSheet, View } from "react-native";
import Animated from "react-native-reanimated";
function ProgressBar({ width }) {
return (
<View style={styles.ProgressBar}>
<Animated.View style={[styles.absoluteFill, { width }]}></Animated.View>
</View>
);
}
const styles = StyleSheet.create({
ProgressBar: {
height: 22,
borderWidth: 2,
borderColor: "#000",
borderRadius: 10,
width: 200
},
absoluteFill: {
position: "absolute",
top: 0,
left: 0,
right: 0,
bottom: 0,
backgroundColor: "#000",
borderRadius: 5
}
})
export default memo(ProgressBar);
作为分隔符的split Browser
列之后,您可以使用map提取或替换该列中的字符和数字,从而以您所需要的方式转换数据需要。连接最后两列以获得该框架的所需输出。
可以再次应用先前使用的相同原理来替换列|
上的数据,现在使用Age
作为re.sub
函数仅获取“标准值”。 / p>
map
df 和 age
的输出import pandas as pd
import re
br = pd.read_csv("browser.csv")
age = pd.read_csv("age.csv")
br = br.iloc[:, 0].str.split("|", expand=True)
br.iloc[:, -2] = br.iloc[:, -2].map(lambda x: x.strip())
br.iloc[:, -1] = br.iloc[:, -1].map(lambda x: x.split(".")[0])
df = pd.DataFrame()
df["Browser Version"] = br.iloc[:, -2] + br.iloc[:, -1]
# remove blanks, commas, symbols, etc
age.iloc[:, -1] = age.iloc[:, -1].map(lambda x: re.sub(r"\D+.*", "", x))
# if the number in age is up to a 100 keep it, else replace with "null".
age.iloc[:, -1] = age.iloc[:, -1].map(lambda x: int(x) if int(x) <= 100 else "null")
print(df)
print(age)