【问题标题】:df['colimn_name'] vs df.loc[:, 'colimn_name']df['colimn_name'] vs df.loc[:, 'colimn_name']
【发布时间】:2020-11-08 05:54:51
【问题描述】:

我想了解更多信息。关于以下问题的答案:

  1. df[‘Name’] 和 2. df.loc[:, ‘Name’],其中:

df = pd.DataFrame(['aa', 'bb', 'xx', 'uu'], [21, 16, 50, 33], columns = ['Name', 'Age'])

选择正确的选项:

  1. 1 是原始数据帧的视图,2 是原始数据帧的副本
    数据框
  2. 2 是原始数据框的视图,1 是 原始数据框
  3. 两者都是原始数据帧的副本
  4. 两者都是原始数据框的视图

我在网上找到了多个答案,但不确定。我认为答案是 2,但是当我尝试 x = df['name'] 然后 x[0] = 'cc' 然后 print(df) 我看到更改出现在原始数据框中。因此,尽管我也收到了警告,但更改如何出现在原始数据框中: 正在尝试在 DataFrame 中的切片副本上设置值

我只是想更多地了解两者之间的区别,而天气一个是否真的是原始数据帧的副本。谢谢。

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    他们都只是VIEW,如果您需要我们需要的副本

    df['Name'].copy(). 
    df.loc[:, 'Name'].copy()
    

    loc这里可以让你同时访问indexcolumn,也避免了链式切片

    df.loc[cond1, cond2]
    

    注意上面loc 也可以传递条件而不仅仅是列名

    df.loc[:, df.columns=='Name']
    #df[df.columns=='Name'] this will return error 
    

    Div 示例

    df=pd.DataFrame([[1,2,3],[2,3,4]])
    df
       0  1  2
    0  1  2  3
    1  2  3  4
    df[df.columns==0]
    
    Traceback (most recent call last):
    

    【讨论】:

    • 条件也可以在df[]中给出
    • @DivyesshMaheshwari 你确定吗?
    • @DivyesshMaheshwari 如果条件是 [] 中的索引切片
    • 我确定,任何条件都可以放哥
    • @DivyesshMaheshwari 试试这个例子
    【解决方案2】:

    两者都是原始数据框的视图 一种可用于在数据框中添加更多列,另一种用于专门获取数据框中的单元格或行或列的视图。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-20
      • 1970-01-01
      • 2022-11-21
      • 2023-02-06
      • 2020-11-29
      • 2017-11-18
      • 2021-09-27
      • 1970-01-01
      相关资源
      最近更新 更多