我在这里遇到了一个小挑战。我有以下 Dataframe :
ID Cards ... opp cards1
0 flop850262436159b10 ('3h', 'tc', '5s') ... 0.000000 10
1 flop850262436159b10 ('3h', 'tc', '5s') ... 0.533690 10
2 flop850262436159b10 ('3h', 'tc', '5s') ... 0.021292 10
3 flop850262436159b10 ('3h', 'tc', '5s') ... 0.022805 10
4 flop850262436159b10 ('3h', 'tc', '5s') ... 0.999691 10
... ... ... ... ...
749995 flop573952955203b10 ('ts', '2c', 'jd') ... 0.162980 10
749996 flop573952955203b10 ('ts', '2c', 'jd') ... 0.541003 10
749997 flop573952955203b10 ('ts', '2c', 'jd') ... 0.341836 10
749998 flop573952955203b10 ('ts', '2c', 'jd') ... 0.219956 10
749999 flop573952955203b10 ('ts', '2c', 'jd') ... 0.363605 10
我想做的是下面的事情,我想从存储在列cards
中的字符串中检索第一个字母,如果字符串第三个字符是字母,那么我想把它转换成整数,如果不是,那么保持原样。
例如,对于('ts', '2c', 'jd')
,我们应该将t
转换为10
我已经尝试了下面的代码。但是它似乎不起作用。我正在使用的过滤器似乎不适用于我正在存储新值的新列。
df = pd.read_csv('path', sep=";")
if (df['cards'].astype(str).str[0] =="t").any() == True:
df['cards1'] = 10
else:
df['cards1'] = df['cards'].astype(str).str[0]
下面返回的 Dataframe 。正如您在列cards1
中看到的,值10
总是被返回。
ID Cards ... opp cards1
0 flop850262436159b10 ('3h', 'tc', '5s') ... 0.000000 10
1 flop850262436159b10 ('3h', 'tc', '5s') ... 0.533690 10
2 flop850262436159b10 ('3h', 'tc', '5s') ... 0.021292 10
3 flop850262436159b10 ('3h', 'tc', '5s') ... 0.022805 10
4 flop850262436159b10 ('3h', 'tc', '5s') ... 0.999691 10
... ... ... ... ...
749995 flop573952955203b10 ('ts', '2c', 'jd') ... 0.162980 10
749996 flop573952955203b10 ('ts', '2c', 'jd') ... 0.541003 10
749997 flop573952955203b10 ('ts', '2c', 'jd') ... 0.341836 10
749998 flop573952955203b10 ('ts', '2c', 'jd') ... 0.219956 10
749999 flop573952955203b10 ('ts', '2c', 'jd') ... 0.363605 10
老实说,我不知道如何改变这种情况。我非常乐意讨论其他的方法。
谢谢大家的帮助
3条答案
按热度按时间jgovgodb1#
嗨,我还不能发表评论,但我可能可以给你指出正确的方向。
将返回组合字符串中的第一个字符“(”。您可以尝试通过对象的索引到达对象的所需部分。
将以字符串形式返回“3h”,并且可以通过其索引访问。
将返回True,因为我们在元组的第一个字符处访问元组的第二个元素。
(“3h”、“tc”、“5s”)
hgc7kmma2#
如果使用 “string 3rd character” 表示字符元组中字符的序号位置,请使用以下方法:
df
的输出示例:vdzxcuhz3#
首先确保列
Cards
的类型为str。然后我们可以取字符[8]并检查它是否在0 - 9中。
如果此条件== True,则将"cards10"写入
cards1
列。这可能看起来像这样:
如果你想在卡片栏里替换它