将数据帧合并到每个较小的帧中,然后在最后进行连接

2024-10-01 02:31:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下数据帧:

dfTotal:

     keyword  variation_percentage    date
0    Ansiedade                   NaN  2016-01-01
1    Ansiedade            135.222672  2016-01-02
2    Ansiedade             -5.163511  2016-01-03
3    Ansiedade             -1.149425  2016-01-04
4    Ansiedade              4.100367  2016-01-05
..         ...                   ...         ...
295      Preco              2.346403  2016-02-25
296      Preco              6.425339  2016-02-26
297      Preco             33.333333  2016-02-27
298      Preco              2.040816  2016-02-28
299      Preco            -40.625000  2016-02-29

column关键字重复多次。日期列也会相对于关键字重复。例如,日期将是唯一的,直到DF中的关键字发生更改,然后重复完全相同的日期

我想分割这个数据框,使它成为第一列中的日期(该范围只出现一次,这样它就不会重复本身)。这意味着一个关键字的日期范围与所有关键字的日期范围相同。所以我们需要把接下来的所有列集中在一起,这样它们就可以显示关键字,关键字2,变量,这里是变量值,然后是变量值,等等

所以

        date  ansiedade_VAR  Preço_Var  ... keyword_VAR
  2016-01-01  NaN             ....           ....
  2016-01-02  135.222672
  2016-01-03  -5.163511
  2016-01-04  -1.149425 
  2016-01-05   4.10036
  ...           ...                   ...         ...
  2016-02-25
  2016-02-26
  2016-02-27
  2016-02-28
  2016-02-29

所有数据都在DFTotal中

我开始为日期运行此循环,但它不起作用:

for i in dfKeyword['keyword']:
    for j in dfTotal['keyword']:
        if i == j:
            newDf = pd.DataFrame
            newDf['date'][j] = dfTotal['date'][j]
            break

我会为关键字复制这个循环,并在字符串中插入一个变量。我得到了以下错误:

Traceback (most recent call last):
  File "runQuery.py", line 35, in <module>
    newDf['date'][j] = dfTotal['date'][j]
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pandas/core/series.py", line 871, in __getitem__
    result = self.index.get_value(self, key)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pandas/core/indexes/base.py", line 4405, in get_value
    return self._engine.get_value(s, k, tz=getattr(series.dtype, "tz", None))
  File "pandas/_libs/index.pyx", line 80, in pandas._libs.index.IndexEngine.get_value
  File "pandas/_libs/index.pyx", line 90, in pandas._libs.index.IndexEngine.get_value
  File "pandas/_libs/index.pyx", line 135, in pandas._libs.index.IndexEngine.get_loc
  File "pandas/_libs/index_class_helper.pxi", line 109, in pandas._libs.index.Int64Engine._check_type
KeyError: 'Ansiedade'

我需要帮助。提前非常感谢,如果您有任何问题,请告诉我


Tags: 数据inpandasgetdateindexvalueline
1条回答
网友
1楼 · 发布于 2024-10-01 02:31:06

我不确定这是否正是你想要的,但我相信这应该行得通

df.set_index(['date','keyword']).unstack().reset_index().add_suffix('_var').droplevel(0,axis=1).rename(columns = {'_var':'date'}).rename_axis(columns=None)

相关问题 更多 >