![](/img/trans.png)
[英]how do i convert my pandas dataframe to 1nf? (To decrease the number of unique values in a column)
[英]Reformat pandas DataFrame into a formal 1nf
如果我有這樣一個 DataFrame 以前由電子表格程序制作的
多變的 | 日期 | A | 乙 | C |
---|---|---|---|---|
值 1 | 鈉 | 鈉 | 鈉 | 鈉 |
鈉 | 14.08. 21:00 | 1個 | 123 | 3個 |
鈉 | 07.08. 21:00 | 2個 | 321 | 1個 |
值2 | 鈉 | 鈉 | 鈉 | 鈉 |
鈉 | 01.08. 20:00 | 1個 | 132 | 2個 |
然后我需要在一段代碼中將它轉換為 1nf 形式的數據庫,看起來像這樣
多變的 | 日期 | A | 乙 | C |
---|---|---|---|---|
值 1 | 14.08. 21:00 | 1個 | 123 | 3個 |
值 1 | 07.08. 21:00 | 2個 | 321 | 1個 |
值2 | 01.08. 20:00 | 1個 | 132 | 2個 |
我試圖在這段代碼中完成這樣的工作
def normalize(Series):
x=""
for value in Series:
if pd.notna(value):
x=value
elif pd.isnull(value):
value=x
normalize(df['Variable'])
因此,如果單元格的值不是 null,它會遍歷該系列,然后它將值保存到一個變量中,以便在每次出現 null 時插入它,然后取另一個值,依此類推,然后我可以執行df.dropna()
到刪除僅包含變量值的行作為 header 並僅保留數據
但它似乎有點問題它要么不會更改df['variable']
中的任何內容,要么將其所有值更改為None
這兩者都不是我想要的
有誰知道該怎么做?
嘗試使用ffill()
和dropna()
:
df["Variable"] = df["Variable"].ffill()
df = df.dropna()
>>> df
Variable Date A B C
1 Value1 14.08. 21:00 1.0 123.0 3.0
2 Value1 07.08. 21:00 2.0 321.0 1.0
4 Value2 01.08. 20:00 1.0 132.0 2.0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.