Python 在dataframe的列中的某个位置添加字符串
基本上:Python 在dataframe的列中的某个位置添加字符串,python,pandas,Python,Pandas,基本上: hash = "355879ACB6" hash = hash[:4] + '-' + hash[4:] print (hash) 3558-79ACB6 但是对于数据帧 我只能成功地在前后添加字符串,如下所示: data ['col1'] = data['col1'] + 'teststring' 如果我尝试从上面的链接[:amountofcharacterstocutafter]中的解决方案,在某个位置添加值,如下所示: test = data[:2] +
hash = "355879ACB6"
hash = hash[:4] + '-' + hash[4:]
print (hash)
3558-79ACB6
但是对于数据帧
我只能成功地在前后添加字符串,如下所示:
data ['col1'] = data['col1'] + 'teststring'
如果我尝试从上面的链接[:amountofcharacterstocutafter]
中的解决方案,在某个位置添加值,如下所示:
test = data[:2] + 'zz'
print (test)
它似乎不适用,因为[:2]
操作符对数据帧的作用与对字符串的作用不同。它在前两行之后剪切输出
目标:
我想在某个位置加一个“-”。假设输入行值为“TTTT1234”,输出应为“TTTT-1234”。对于每一行。使用。例如:
import pandas as pd
df = pd.DataFrame({
"c": ["TTTT1234"]
})
df["c"].str[:4] + "-" + df["c"].str[4:] # It will output 'TTTT-1234'
str提供矢量化字符串函数。使用。例如:
import pandas as pd
df = pd.DataFrame({
"c": ["TTTT1234"]
})
df["c"].str[:4] + "-" + df["c"].str[4:] # It will output 'TTTT-1234'
pd.Series.str提供矢量化字符串函数。您可以执行列表中显示的操作,但数据帧中有一列,因此它(有点)不同 因此,尽管您可以这样做:
hash = "355879ACB6"
hash = hash[:4] + '-' + hash[4:]
要在数据帧上执行此操作,您至少可以通过两种方式执行:
考虑这个虚拟df:
LOCATION Hash
0 USA 355879ACB6
1 USA 455879ACB6
2 USA 388879ACB6
3 USA 800879ACB6
4 JAPAN 355870BCB6
5 JAPAN 355079ACB6
A.矢量化:最有效的原因
df['new_hash']=df['Hash'].str[:4]+'-'+df['Hash'].str[4:]
LOCATION Hash new_hash
0 USA 355879ACB6 3558-79ACB6
1 USA 455879ACB6 4558-79ACB6
2 USA 388879ACB6 3888-79ACB6
3 USA 800879ACB6 8008-79ACB6
4 JAPAN 355870BCB6 3558-70BCB6
5 JAPAN 355079ACB6 3550-79ACB6
B.采用lambda:直观实施,但在性能方面吸引力较小
df['new_hash'] = df.apply(lambda x: x['Hash'][:4]+'-'+x['Hash'][4:], axis=1)
您可以执行列表上显示的操作,但数据帧中有一列,因此它(有点)不同 因此,尽管您可以这样做:
hash = "355879ACB6"
hash = hash[:4] + '-' + hash[4:]
要在数据帧上执行此操作,您至少可以通过两种方式执行:
考虑这个虚拟df:
LOCATION Hash
0 USA 355879ACB6
1 USA 455879ACB6
2 USA 388879ACB6
3 USA 800879ACB6
4 JAPAN 355870BCB6
5 JAPAN 355079ACB6
A.矢量化:最有效的原因
df['new_hash']=df['Hash'].str[:4]+'-'+df['Hash'].str[4:]
LOCATION Hash new_hash
0 USA 355879ACB6 3558-79ACB6
1 USA 455879ACB6 4558-79ACB6
2 USA 388879ACB6 3888-79ACB6
3 USA 800879ACB6 8008-79ACB6
4 JAPAN 355870BCB6 3558-70BCB6
5 JAPAN 355079ACB6 3550-79ACB6
B.采用lambda:直观实施,但在性能方面吸引力较小
df['new_hash'] = df.apply(lambda x: x['Hash'][:4]+'-'+x['Hash'][4:], axis=1)
非常感谢。我用了A,然后删除了旧专栏。谢谢。我使用了A,然后删除了旧列。欢迎使用Stackoverflow。我喜欢你的问题:它们很清楚。你已经接受了下面的答案作为对你问题的适当回答,这非常好。如果一个或多个答案有用,您也可以向上投票。这是他们应得的欢迎来到Stackoverflow。我喜欢你的问题:它们很清楚。你已经接受了下面的答案作为对你问题的适当回答,这非常好。如果一个或多个答案有用,您也可以向上投票。这是他们应得的。