簡體   English   中英

將注釋行添加到 Pandas Dataframe 中的行(在同一索引處)

[英]Add a comment row to a row (at the same index) in a Pandas Dataframe

具體來說,我正在尋找一種方法來迭代 Dataframe,並在滿足條件的情況下添加這樣的行。 添加的行將具有與其添加到的行相同的索引。 找不到相關信息。

用於此問題的代碼和數據:

a = {'a': [1,3,5,7], 'b': [2,4 ,6, 8], 'c': [3, 5,7,9]}
b = pandas.DataFrame(a)
b
Out[4]: 
a  b  c
0  1  2  3
1  3  4  5
2  5  6  7
3  7  8  9

如果對於一行中的數字總和: sum_row % 4 = 0 ,程序會在該行中添加一行,該行與初始行具有相同的索引。 添加的行不分為列,而是由一個帶有注釋的單元格組成。
所需的 dataframe 應如下所示:

a  b  c
0  1  2  3
1  3  4  5
   sum_row % 4 yields no remainder
2  5  6  7
3  7  8  9
   sum_row % 4 yields no remainder

或者

    a  b  c
0  1  2  3
1  3  4  5
1  sum_row % 4 yields no remainder
2  5  6  7
3  7  8  9
3  sum_row % 4 yields no remainder

謝謝。

這是我的解釋:他需要在每一行中評估“mod 4”(% 4)。 這是我使用 iterrows 進入 DATAFRAME 的老派循環。 使用此代碼,您可以在 Loop 中創建一個新的 DF,或者創建一個具有 % 4 結果的 D 列。

import pandas as pd

# Loop in DATAFRAME

a = {'a': [1,3,5,7], 'b': [2,4 ,6, 8], 'c': [3, 5,7,9]}
b = pd.DataFrame(a)

# Print Data Frame
# print (b) 
for index, x in b.iterrows():
  # Print Line
  print (x['a'] , x['b'] , x['c'] )
  result = (x['a'] + x['b'] + x['c'] ) % 4
  if result == 0:
    # Print Result
    print ('sum_row % 4 yields no remainder')
  

如圖所示,所需的 output 是不可能的。 你可以這樣做:

import pandas as pd

spam = {'a': [1,3,5,7], 'b': [2,4 ,6, 8], 'c': [3, 5,7,9]}
df = pd.DataFrame(spam)
df['remainder'] = (df.sum(axis=1) % 4).astype(bool)
df['comment'] = df.remainder.apply(lambda x: 'remainder' if x else 'no remainder')
print(df)

output

   a  b  c  remainder      comment
0  1  2  3      True     remainder
1  3  4  5     False  no remainder
2  5  6  7      True     remainder
3  7  8  9     False  no remainder

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM