Nic*_*ach 2 python python-2.7 pandas
我正在尝试根据第四列中的值填充其他两列中的一列中的值。
我有一个包含四列的 Pandas 数据框:A、B、C、D
df_copy = df.copy()
for i, row in df.iterrows():
if 'Test' in row.D:
df_copy.loc[i, 'A'] = row.B
elif 'Other' in row.D:
df_copy.loc[i, 'A'] = row.C
Run Code Online (Sandbox Code Playgroud)
这有效,但速度很慢。有没有更有效的方法?
您可以为此使用“布尔索引”,而不是遍历所有行:
df_copy.loc[df['D']=='Test', 'A'] = df['B']
df_copy.loc[df['D']=='Other', 'A'] = df['C']
Run Code Online (Sandbox Code Playgroud)
如果您知道 D 列仅包含这两个值,则它甚至可以更短:
df_copy['A'] = df['B']
df_copy.loc[df['D']=='Other', 'A'] = df['C']
Run Code Online (Sandbox Code Playgroud)
如果您想使用与in运算符相同的来测试该子字符串是否在列中,您可以执行以下操作:
df['D'].str.contains('Other')
Run Code Online (Sandbox Code Playgroud)
成为布尔值而不是 df['D']=='Other'
| 归档时间: |
|
| 查看次数: |
11264 次 |
| 最近记录: |