我有一个数据帧列,其中包含单个整数值或两个整数的范围。我想创建一个最终列,其中对范围值进行平均,以便该列成为纯整数。
我尝试使用 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/