gpt4 book ai didi

python - 重建 Pandas 数据框

转载 作者:行者123 更新时间:2023-12-04 00:53:20 28 4
gpt4 key购买 nike

我是 Python 的新手。我在重建一个错误的 Dataframe 时遇到了麻烦。我的数据框如下所示:

df = pd.DataFrame({'col1': ['id 1', 'id 2', 'test 3', 'test 4'],
'col2': ['test 1', 'test 2',
'Number 6135', 'id 4'],
'col3': ['Number 12344', 'Number 21612','id 3','Number 1131']})

enter image description here

如您所见,我在第一列、第二列和第三列中有“id´s”。其他值也一样。

我的目标是拥有一个 Dataframe,其中每个 Col 只有以相同子字符串开头的值,就像这个例子:

enter image description here

我已经尝试使用 for 循环和 if 语句来检查某个子字符串是否在我的字符串中。如果是这样,我将创建一个新列并在其中写入我的值

for x in df['col1']:
if 'id' in x:
df['newCol']=x

我知道这段代码永远无法解决我的问题,也许有一些 pandas 函数可以帮助我解决这个问题

如果有什么不清楚的地方,尽管问我,我会尽力解释我的问题。

最佳答案

您可以将 sorted() 与自定义键函数一起使用:

def key_fn(x):
if 'id' in x:
return 0
if 'test' in x:
return 1
if 'Number' in x:
return 2
return 3

df = df.apply(lambda x: pd.Series(sorted(x, key=key_fn)), axis=1)
df = df.rename(columns=lambda x: 'col{}'.format(x+1))
print(df)

打印:

   col1    col2          col3
0 id 1 test 1 Number 12344
1 id 2 test 2 Number 21612
2 id 3 test 3 Number 6135
3 id 4 test 4 Number 1131

另一个版本,来自评论:

df = pd.DataFrame([sorted(l, key=key_fn) for l in df.values], columns=df.columns)
print(df)

关于python - 重建 Pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64695168/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com