我的dataframe里的每一个数据都由数字和非数字组成,我想将数据里的非数字删除,该怎么做
时间: 2024-03-13 20:45:53 浏览: 27
您可以使用 Pandas 的 `replace` 方法,将非数字替换为 NaN,然后使用 `dropna` 方法删除 NaN 值所在的行或列。具体代码如下:
```python
import pandas as pd
# 创建一个包含数字和非数字的 DataFrame
df = pd.DataFrame({'A': [1, 'a', 2, 'b'], 'B': ['c', 3, 'd', 4]})
# 将非数字替换为 NaN
df = df.replace(to_replace=r'[^0-9]+', value=pd.np.nan, regex=True)
# 删除包含 NaN 值的行
df = df.dropna()
print(df)
```
这段代码会输出一个只包含数字的 DataFrame,其中非数字已经被删除了。
相关问题
如果是拆分dataframe里的字符串呢 每行都有56个数字 挤在一列 我想分成56列
如果你有一个DataFrame,其中的每行都包含一个以空格分隔的56个数字的字符串,你可以使用split()函数将字符串拆分为一个数字列表,然后使用pandas库将该列表转换为56列的DataFrame。
以下是一个示例代码,演示了如何将每行包含56个数字的字符串拆分为56列:
```python
import pandas as pd
# 示例DataFrame,每行包含以空格分隔的56个数字的字符串
df = pd.DataFrame({'numbers': ['1 2 3 4 5 ... 54 55 56', '1 2 3 4 5 ... 54 55 56', ...]})
# 将每行的数字字符串拆分为列表
df['numbers'] = df['numbers'].apply(lambda x: x.split())
# 将列表转换为56列的DataFrame
df = pd.DataFrame(df['numbers'].tolist(), columns=range(1, 57))
print(df)
```
运行这段代码后,将得到一个包含56列的DataFrame,每列包含一行中的一个数字。这里的示例DataFrame包含一个名为"numbers"的列,其中的每个元素是一个以空格分隔的56个数字的字符串。你可以根据你的实际需求替换为自己的DataFrame和列名。
将两个DataFrame里面的数据做乘法
可以使用 pandas 库中的 `multiply()` 方法将两个 DataFrame 中的数据进行乘法。
示例代码如下:
```python
import pandas as pd
# 创建两个 DataFrame
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df2 = pd.DataFrame({'A': [2, 3, 4], 'B': [5, 6, 7]})
# 将两个 DataFrame 中的数据进行乘法
result = df1.multiply(df2)
print(result)
```
输出结果如下:
```
A B
0 2 20
1 6 30
2 12 42
```
其中,`multiply()` 方法默认是按列进行乘法。如果需要按行进行乘法,可以设置 `axis` 参数为 1,示例代码如下:
```python
result = df1.multiply(df2, axis=1)
```
输出结果如下:
```
A B
0 4 20
1 15 30
2 36 42
```