Python 如何在DataFrame中分离和添加值?
我有一个数据框,看起来像: df1: 我需要的是分离并添加包含T和K的值,并且只返回数字而不返回文本。也可以完全忽略0.0Nonne 最终的表应该如下所示: df2: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
让我们尝试使用
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