python - 使用不同的数据框更改列值 - Python Pandas

标签 python pandas

我有一个如下所示的 dataframe1:

A  B   C   D  
1 111  a   9
2 121  b   8
3 122  c   7
4 121  d   6
5 131  e   5

另外,我还有另一个 dataframe2:

   Code   String
    111     s
    12      b
    13      u

我想要的是创建一个如下所示的数据框:

A  B   C   D  
1 111  S   9
2 121  b   8
3 122  c   7
4 121  b   6
5 131  u   5

也就是说,取前 n 位数字(其中 n 是 dataframe2 的 Code 列中的位数),如果它与代码具有相同的数字,则 dataframe1 中的 C 列将针对 dataframe2 中的字符串进行更改.

最佳答案

这是你想要的吗?代码不是很简洁,但是可以工作..

import pandas as pd 
DICT=df2.set_index('Code').T.to_dict('list')

Temp=[]

for key, value in DICT.items():
    n=len(str(key))
    D1={str(key):value[0]}
    T=df1.B.astype(str).apply(lambda x: x[:n]).map(D1)

    Temp2=(df1.B.astype(str).apply(lambda x: x[:n]))
    Tempdf=pd.DataFrame({'Ori':df1.B,'Now':Temp2,'C':df1.C})
    TorF=(Tempdf.groupby(['Now'])['Ori'].transform(min) == Tempdf['Ori'])

    for n, i in enumerate(T):
        if TorF[n]==False:
            T[n]=Tempdf.ix[n,0]
    Temp.append(T)
df1.C=pd.DataFrame(data=Temp).fillna(method='bfill').T.ix[:,0]

Out[255]: 
   A    B  C  D
0  1  111  s  9
1  2  121  b  8
2  3  122  c  7
3  4  121  b  6
4  5  131  u  5

关于python - 使用不同的数据框更改列值 - Python Pandas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44770278/

相关文章:

python - 选择基于 where 语句的行

python - pandas - 如何获取 groupby 对象的最后 n 组并将它们组合为数据框

python - 将 pandas 数据框对齐为面板

python - 使用日期作为索引合并 Pandas 数据框

python - 如何在 PyCharm 中使用元编程支持动态类型提示?

python - 从单独文件中的类创建对象

Python仅列出包含特定子文件夹的文件夹

python - 获取两个数组的行的有效方法,这些数组在其列的分数中具有匹配的值

python - Django lighttpd FCGI 错误

python - 在 Pandas DataFrame 中查找数字最接近的行