Python Dataframe根据另一列的值向新列添加值
python 289
原文标题 :Python Dataframe add a value to new column based on value from another column
实现这种情况的最短方法是什么::
Dataframe1:(Dataframe1 A 列有额外的值,因此我不能简单地执行 df2[“Column C”] = df[“Column B”])
Column A | Column B |
---|---|
Cell 1 | Valu 2 |
Cell w | Valu 8 |
Cell 3 | Valu 4 |
条件:在 Dataframe1 的 B 列中的 Dataframe2 的 C 列(新列)插入值,其中来自 Dataframe1 ‘Cell 1’ 的列 A 的值与来自 Dataframe2 ‘Cell 1’ 的列 X 的值匹配
Dataframe2 Initial:(只有 X 列和 J 列)
Column X | Column J |
---|---|
cell 1 | Data c |
cell 3 | Data f |
Dataframe2 Final:(只有 X 列和 J 列,现在具有上述条件的 C 列)
Column X | Column J | Column C |
---|---|---|
Cell 1 | Data c | Valu 2 |
Cell 3 | Data f | Valu 4 |
for key, value3 in df['Column A'].iteritems():
value2 = datetime.datetime.strptime(value3, '%m/%d/%Y').strftime('%Y-%m-%d')
value2 = str(value2)
for key2, value4 in df2['Column X'].iteritems():
sep = ' '
value = str(value4)
stripped = value.split(sep, 1)[0]
if value2 == stripped:
x = df[df['Column A']==value3]['Column B'].values[0]
df2['Column C'][key2] = x
回复
我来回复-
Prats 评论
该回答已被采纳!
你可以使用a
merge
来达到你想要的结果。import pandas as pd df = pd.DataFrame({'Col A':['Cell 1','Cell 3'],'Col B':['Cell 2','Cell 4']}) df1 = pd.DataFrame({'Col X':['Cell 1','Cell 3'],'Col Y':['Cell c','Cell F']}) df2 = df1.merge(df,left_on='Col X',right_on='Col A',how='inner') df2
在此之后,您可以操作数据(删除额外的列,重命名列),但这将帮助您将 ‘Col B’ 放入 df1 if df[‘Col A’] = df1[‘Col X]
2年前 -
SpaceBurger 评论
这就是你可以用
DataFrame.join(...)
操作来做到的。您确实也可以使用DataFrame.merge(...)
方法。import pandas as pd # definition of the dataframes df = pd.DataFrame(columns=["A", "B"]) df.A = [1, 2, 3] df.B = ["b1", "b2", "b3"] df2 = pd.DataFrame(columns=["X"]) df2.X = [1, 3] # join operation df2_final = df2.set_index("X").join(df.set_index("A")).reset_index()
哪个输出:
X B 0 1 b1 1 3 b3
2年前