python - Pandas Dataframe 中的动态索引字符串切片

标签 python pandas

我有一个数据帧列,其中包含单个整数值或两个整数的范围。我想创建一个最终列,其中对范围值进行平均,以便该列成为纯整数。

我尝试使用 pandas.str.find("-") 查找断点的位置,然后使用 np.where() 为范围中的第一个值和第二个值创建单独的列。

import numpy as np
import pandas as pd

d = {'A' : ['1234', '12 - 16'], 'Avg':[1234, 14]}
df= pd.DataFrame(d)

df['bp'] = df['A'].str.find("-")
df['F'] = np.where(df['bp']>0, df['A'].str.slice(0, df['bp']), df['A'])

我收到 NAN,其中列中存在范围。预期输出位于“Avg”列中。

最佳答案

使用str.split

df['A'].str.split(' - ').apply(lambda s: sum(map(int,s))/len(s),1)
<小时/>
0    1234.0
1      14.0
Name: A, dtype: float64

关于python - Pandas Dataframe 中的动态索引字符串切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58405219/

相关文章:

python - 如何将两个嵌套列表的每个元素相乘?

python - 如何将 sklearn tfidf 矢量 pandas 输出转换为有意义的格式

Python Pandas - 使用两列的标准计算平均值

python - 根据条件对 Pandas 数据框进行分组?

python - 对 Pandas 数据框中的两列求和

python - 在数据框行上运行以减少重复对 Python

python - 查找整数列表中是否存在谷

Python - 类型错误 : 'int' object is not iterable for dictionaries

python - 尝试更改 Pandas 数据框中的单个值

python - 如何更改数值并仅匹配单词作为文件内的键?