Python 如何在DataFrame中分离和添加值?

Python 如何在DataFrame中分离和添加值?,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个数据框,看起来像: df1: 我需要的是分离并添加包含T和K的值,并且只返回数字而不返回文本。也可以完全忽略0.0Nonne 最终的表应该如下所示: df2: 让我们尝试使用str.extract提取值。然后groupby().sum(): 输出: 1 T K 0 2.0 3.0 1 3.0 0.0 2 4.0 10.0 stack要重塑的数据帧,然后使用Series.str.extract和带有命名捕获组的正则表达式模式以及level=0上的sum: p

我有一个数据框,看起来像:

df1:

我需要的是分离并添加包含T和K的值,并且只返回数字而不返回文本。也可以完全忽略0.0Nonne

最终的表应该如下所示:

df2:


让我们尝试使用
str.extract
提取值。然后
groupby().sum()

输出:

1    T     K
0  2.0   3.0
1  3.0   0.0
2  4.0  10.0

stack
要重塑的数据帧,然后使用
Series.str.extract
和带有命名捕获组的正则表达式模式以及
level=0上的
sum

p = r'^(?:(?P<T>[\d.]+(?=T))|(?P<K>[\d.]+(?=K)))'
s = df.stack().str.extract(p).astype(float).sum(level=0)

@bassline_芭蕾舞演员你能详细说明一下吗?嗨,它正在工作,但它没有给我正确的结果。我拥有的真实数据帧有值:第一行:110.0T 141.9T 85.0T 0.0None第二行:125.0T 109.65T 75.0T 120.6999999999T```您的代码返回:第一行9表示T,第二行0表示K表示T,第二行7e+13表示T,在我看来,它只接受点后的计算数。@bassline\u ballerina您能告诉我吗尝试
s=df.stack().str.extract(r'^(?(?P[\d.]+(?=T))|(?P[\d.]+(?=K)))).astype(float).sum(level=0)
(df.stack().str.extract('^(\d+)(T|K)')
   .dropna()
   .assign(order=lambda x: x.groupby([1]).cumcount())
   .pivot(index='order',columns=[1], values=0)
   .astype(float)
   .groupby('T', as_index=False).sum()
)
1    T     K
0  2.0   3.0
1  3.0   0.0
2  4.0  10.0
p = r'^(?:(?P<T>[\d.]+(?=T))|(?P<K>[\d.]+(?=K)))'
s = df.stack().str.extract(p).astype(float).sum(level=0)
     T     K
0  2.0   3.0
1  4.0  10.0
2  7.0   0.0