我想在熊猫数据框架的一个列中(优雅地)附加一个字符串到每个值的开始。
我已经知道如何做到这一点,我目前正在使用:
df.ix[(df['col'] != False), 'col'] = 'str'+df[(df['col'] != False), 'col']
这似乎是一件非常不优雅的事情——你知道其他方法吗(可能也会将字符添加到列为0或NaN的行中)?
如果这一点还不清楚,我想谈谈:
col
1 a
2 0
成:
col
1 stra
2 str0
在控制nan(例如csv导出中人类可读的值)时,为列添加前缀。
“_”+ df[‘col1’],replace(np.nan), astype(str)
例子:
import sys
import platform
import pandas as pd
import numpy as np
print("python {}".format(platform.python_version(), sys.executable))
print("pandas {}".format(pd.__version__))
print("numpy {}".format(np.__version__))
df = pd.DataFrame({
'col1':["1a","1b","1c",np.nan],
'col2':["2a","2b",np.nan,"2d"],
'col3':[31,32,33,34],
'col4':[np.nan,42,43,np.nan]})
df['col1_prefixed'] = "_" + df['col1'].replace(np.nan,'no value').astype(str)
df['col4_prefixed'] = "_" + df['col4'].replace(np.nan,'no value').astype(str)
print(df)
python 3.7.3
pandas 1.2.3
numpy 1.18.5
col1 col2 col3 col4 col1_prefixed col4_prefixed
0 1a 2a 31 NaN _1a _no value
1 1b 2b 32 42.0 _1b _42.0
2 1c NaN 33 43.0 _1c _43.0
3 NaN 2d 34 NaN _no value _no value
(对不起,冗长,我发现这个Q在一个不相关的列类型问题上工作,这是我的复制代码)
在控制nan(例如csv导出中人类可读的值)时,为列添加前缀。
“_”+ df[‘col1’],replace(np.nan), astype(str)
例子:
import sys
import platform
import pandas as pd
import numpy as np
print("python {}".format(platform.python_version(), sys.executable))
print("pandas {}".format(pd.__version__))
print("numpy {}".format(np.__version__))
df = pd.DataFrame({
'col1':["1a","1b","1c",np.nan],
'col2':["2a","2b",np.nan,"2d"],
'col3':[31,32,33,34],
'col4':[np.nan,42,43,np.nan]})
df['col1_prefixed'] = "_" + df['col1'].replace(np.nan,'no value').astype(str)
df['col4_prefixed'] = "_" + df['col4'].replace(np.nan,'no value').astype(str)
print(df)
python 3.7.3
pandas 1.2.3
numpy 1.18.5
col1 col2 col3 col4 col1_prefixed col4_prefixed
0 1a 2a 31 NaN _1a _no value
1 1b 2b 32 42.0 _1b _42.0
2 1c NaN 33 43.0 _1c _43.0
3 NaN 2d 34 NaN _no value _no value
(对不起,冗长,我发现这个Q在一个不相关的列类型问题上工作,这是我的复制代码)