【问题标题】:How to rename entries in pandas dataframe?如何重命名熊猫数据框中的条目?
【发布时间】:2016-08-07 16:19:27
【问题描述】:

我有一个这样的数据框

df=
a  b  
54 12
54 16
18 3
3  33

我想重命名从0 开始的条目并返回如下内容:

df1=
a  b
0  1
0  2
3  4
4  5

【问题讨论】:

  • 这两个数据框是否以任何方式连接?为什么要“重命名”而不是定义一个新名称?
  • 它们无论如何都没有连接。我们可以使用相同的名字
  • 那么:df=pd.DataFrame({'a':[54, 54, 18, 3],'b':[12, 16, 3, 33]})df1=pd.DataFrame({'a':[0,0,3,4],'b':[1,2,4,5]}) 有什么问题?只是为了理解这个问题。
  • 您可能想提供一些信息,您如何从旧数据计算新数据。
  • 我想我理解了这个问题(见我的回答)。我可以编辑它,但我想不出一个好的标题......

标签: python pandas rename


【解决方案1】:

IIUC,您可以通过以下方式获取数据框中的唯一值列表:

In [1]: pd.Series(df.values.flatten()).unique()
Out[1]: array([54, 12, 16, 18,  3, 33])

让我们把它做成一个系列(你会明白为什么):

In [2]: series = pd.Series(pd.Series(df.values.flatten()).unique())
In [3]: series
Out[3]:
    0
0  54
1  12
2  16
3  18
4   3
5  33

现在您需要做的就是将原始值替换为上述系列的索引。


对于给定的值,例如16,这是你的做法:

In [4]: series[series==16].index[0]
Out[4]: 
2

现在您可以使用 lambda 函数将其应用于整个数据帧。 applymap 方法会将 lambda 函数分别应用于每个元素:

In [5]: df.applymap(lambda x: series[series==x].index[0])
Out[5]:
   a  b
0  0  1
1  0  2
2  3  4
3  4  5

【讨论】:

    猜你喜欢
    • 2019-09-15
    • 2014-11-23
    • 2019-09-06
    • 1970-01-01
    • 2018-11-30
    • 2017-01-26
    • 2020-08-10
    • 2022-11-29
    • 1970-01-01
    相关资源
    最近更新 更多