Pandas 有条件地创建新数据框列
Pandas conditional creation of a new dataframe column
这个问题是 Pandas conditional creation of a series/dataframe column 的延伸。
如果我们有这个数据框:
Col1 Col2
1 A Z
2 B Z
3 B X
4 C Y
5 C W
我们想做的相当于:
if Col2 in ('Z','X') then Col3 = 'J'
else if Col2 = 'Y' then Col3 = 'K'
else Col3 = {value of Col1}
我该怎么做?
您可以使用 loc
with isin
and last fillna
:
df.loc[df.Col2.isin(['Z','X']), 'Col3'] = 'J'
df.loc[df.Col2 == 'Y', 'Col3'] = 'K'
df['Col3'] = df.Col3.fillna(df.Col1)
print (df)
Col1 Col2 Col3
1 A Z J
2 B Z J
3 B X J
4 C Y K
5 C W C
尝试使用 np.where:outcome = np.where(condition, true, false)
df["Col3"] = np.where(df['Col2'].isin(['Z','X']), "J", np.where(df['Col2'].isin(['Y']), 'K', df['Col1']))
Col1 Col2 Col3
1 A Z J
2 B Z J
3 B X J
4 C Y K
5 C W C
当您有多个 if 条件时,一种简单(但可能效率低下)的方法会很有用。就像您尝试根据四分位数将值放入(比如说)四个桶中。
df 保存你的数据,col1 有值,col2 应该有分桶值 (1,2,3,4)
夸脱有 25%、50% 和 75% 的界限。
试试这个
- 创建一个虚拟列表作为 dummy = []
- 遍历数据框:对于索引,行在 df.iterrows():
- 设置 if 条件,如:if row[col1] <= quart[0]:#25%
- 在 if 下的 dummy 中附加适当的值:dummy.append(1)
- 嵌套的 if-elif 可以处理您附加到 dummy 的所有必需的可选值。
- 添加虚拟作为列:df[col2] = dummy
你可以通过 A = df.describe() 然后 print(A[col1])
找到四分位数
这个问题是 Pandas conditional creation of a series/dataframe column 的延伸。 如果我们有这个数据框:
Col1 Col2
1 A Z
2 B Z
3 B X
4 C Y
5 C W
我们想做的相当于:
if Col2 in ('Z','X') then Col3 = 'J'
else if Col2 = 'Y' then Col3 = 'K'
else Col3 = {value of Col1}
我该怎么做?
您可以使用 loc
with isin
and last fillna
:
df.loc[df.Col2.isin(['Z','X']), 'Col3'] = 'J'
df.loc[df.Col2 == 'Y', 'Col3'] = 'K'
df['Col3'] = df.Col3.fillna(df.Col1)
print (df)
Col1 Col2 Col3
1 A Z J
2 B Z J
3 B X J
4 C Y K
5 C W C
尝试使用 np.where:outcome = np.where(condition, true, false)
df["Col3"] = np.where(df['Col2'].isin(['Z','X']), "J", np.where(df['Col2'].isin(['Y']), 'K', df['Col1']))
Col1 Col2 Col3
1 A Z J
2 B Z J
3 B X J
4 C Y K
5 C W C
当您有多个 if 条件时,一种简单(但可能效率低下)的方法会很有用。就像您尝试根据四分位数将值放入(比如说)四个桶中。
df 保存你的数据,col1 有值,col2 应该有分桶值 (1,2,3,4) 夸脱有 25%、50% 和 75% 的界限。 试试这个
- 创建一个虚拟列表作为 dummy = []
- 遍历数据框:对于索引,行在 df.iterrows():
- 设置 if 条件,如:if row[col1] <= quart[0]:#25%
- 在 if 下的 dummy 中附加适当的值:dummy.append(1)
- 嵌套的 if-elif 可以处理您附加到 dummy 的所有必需的可选值。
- 添加虚拟作为列:df[col2] = dummy
你可以通过 A = df.describe() 然后 print(A[col1])
找到四分位数