我有一个 Excel 电子表格 - 我通过 pandas 读取 - 其中一些值对应于“A + x”; A 是一个已经定义的值,x 是一个 int。 此 Excel 是一个科目列表,每个科目的 A 和 B 都有不同的值。
我在技术上找到了一个解决方案,但想知道是否有替代解决方案来替代我所做的。 Excel 文件很大,我想要一个不需要编写数百行的解决方案。
身份证 | A | B |
---|---|---|
01 | 5 | A+2 |
02 | 8 | A+4 |
因此,类似“A + 2”的内容将在我从 pd.read_excel 获得的 pandas DataFrame 中列为 str。
我想要的是制作一个包含 10 个条目的 DataFrame,其中每个条目都是随机选择的 ID 01 或 ID 02。
假设我选择第一行,在读取 B 之前定义了 A = 5。 我想通过读取 pandas 中的相应条目来获得 B = 7。 这通常可以通过 DF.iloc[0,1] 获得。 但是,A + 2 是 str,我不能。
我找到了两个有效的解决方案:
def numeric(equation):
A = DF.iloc[0,0]
if '+' in equation:
x = equation.split('+')
y = locals()[x[0]]+int(x[1])
return y
然后使用 numeric(DF.iloc[0,1])。
如果第
A
列中 B
的值是来自第 A
列的值,则可以使用“+”分隔符将行拆分为列表并获取最后一个元素。
将列 A, C
的类型转换为 'int64' 类型。
然后执行将两列的值相加的操作,覆盖列C
。
或者只在B列中写入加法的值并执行加法运算A + B。
import pandas as pd
df = pd.DataFrame({'ID': ['01', '02'], 'A': [5, 8], 'B': ['A+2', 'A+4']})
df['C'] = df['B'].str.split('+').str[1]
df = df.astype({'A': 'int64', 'C': 'int64'})
df['C'] = df['A'] + df['C']