gpt4 book ai didi

python - 访问 DataFrame 的每个条目并以更好的方式替换它们?

转载 作者:太空宇宙 更新时间:2023-11-03 14:20:56 25 4
gpt4 key购买 nike

这个问题是我之前发布的问题的附加问题。我想做的是将 DataFrame 的字符串值替换为其第一个初始字符串。例如,

s = pd.DataFrame({'A':['S12','S1','E53',np.NaN], 'B':[1,2,3,4]})

s.A.fillna('P', inplace=True)

这会给我一个数据框

   A  B
0 S12 1
1 S1 2
2 E53 3
3 P 4

但是,我想将“A”列的字符串值更改为 ['S', 'S', 'E', 'P'],这是它们的第一个字符。我所做的如下,

for i, row in s.iterrows():
if len(row['A']) > 1:
s['A'][i] = row['A'][0]

我收到了这个警告。

/anaconda/lib/python2.7/site-packages/ipykernel/__main__.py:3:         SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: http://pandas.pydata.org/pandas- docs/stable/indexing.html#indexing-view-versus-copy
app.launch_new_instance()
/anaconda/lib/python2.7/site-packages/ipykernel/__main__.py:7: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy

我知道这是一种非首选方式,但是我到底在做什么效率低下以及首选方式是什么?是否可以在不将它们转换为 numpy 数组的情况下做到这一点?

谢谢!

最佳答案

您可以使用fillnaindexing with str通过str[0]:

s['A'] = s['A'].fillna('P').str[0]
print (s)
A B
0 S 1
1 S 2
2 E 3
3 P 4

关于python - 访问 DataFrame 的每个条目并以更好的方式替换它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47949871/

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